vc MFC 类似 spy++,dm的取窗口句柄,这个功能怎么在VC++中实现?

本人初学,请给详细步骤和代码。谢谢... 本人初学,请给详细步骤和代码。谢谢 展开
 我来答
reverse_walker
2013-11-10 · TA获得超过590个赞
知道小有建树答主
回答量:377
采纳率:0%
帮助的人:462万
展开全部
  1. 处理WM_MOUSEMOVE消息

    HANDLE_MSG( hwnd , WM_MOUSEMOVE, OnMouseMove )

  2. 在OnMouseMove中, 设置SetCaputre()

  3. 移动鼠标到目标窗口(切记, SetCapture()捕捉其他程序的窗口鼠标消息要求按住鼠标左键的)

  4. 调用HWND hTarget = WindowFromPoint( ... )

  5. 打印hTarget即可

     

更多追问追答
追问
您好,我没听明白,是不是添加消息后,再在
中添加 HANDLE_MSG( hwnd , WM_MOUSEMOVE, OnMouseMove );::SetCapture();HWND hTarget = WindowFromPoint( ... );
spy++中,是在一个控件中按下左键再开始响应的,我是不是要派生这个控件的类,再在这个控件里添加消息???完整代码?
追答

SPY++同样遵循这个原理, 让你拖动图标到指定窗口, 其实就是受SetCapture的限制.

我已经告诉你方案, 至于怎么实现, 由你自己,

在离开你的客户区之前, 你要限制你的用户按住鼠标左键, 就可捕获到其他窗口的鼠标位移

int do_proc( HWND hDlg , UINT uMsg, WPARAM wParam, LPARAM lParam )
 {
  switch( uMsg )
  {
   HANDLE_DLGMSG( hDlg, WM_MOUSEMOVE, OnMouseMove ) ;

  }

}

 

void OnMouseMove(HWND hwnd, int x, int y, UINT keyFlags)
 {
  if( GetCapture() != hwnd )
   SetCapture(hwnd ) ;

 }

 

class MyTrackTooltip : public TrackToolTip
{
private:
 void do_text_callback( HWND h, INT id, LPNMTTDISPINFO pDispInfo )
 {
  POINT pt ;
  GetCursorPos( &pt ) ;
  HWND hwnd = WindowFromPoint( pt ) ;
  std::wostringstream os ;
  os << L"坐标( " << pt.x << L" : " << pt.y << L" )"  << L" 窗口句柄 = " << hwnd
   << std::endl ;
  StringCchCopy( pDispInfo->szText, 80, os.str().c_str() ) ;
 }
} ;

 

非常简单的.

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式