关于鼠标钩子使用入门

关于鼠标钩子使用入门

1.     MOUSEHOOKSTRUCT 鼠标钩子结构体

  当WH_MOUSE钩子处理的鼠标事件时,该结构包含鼠标信息。
  typedef struct {
  POINT pt;
  HWND hwnd;
  UINT wHitTestCode;
  ULONG_PTR dwExtraInfo;
  } MOUSEHOOKSTRUCT, *PMOUSEHOOKSTRUCT;

参数:
  pt : POINT结构对象,保存鼠标在屏幕上的x,y坐标
  hwnd: 接收到鼠标消息的窗口的句柄
  wHitTestCode: hit-test值,详细描述参见WM_NCHITTEST消息
  dwExtraInfo: 指定与本消息联系的额外消息

2.     WM_NCHITTEST 消息

The WM_NCHITTEST message is sent to a window when the cursor moves, or when a mouse button is pressed or released.
    WM_NCHITTEST
消息当鼠标移动、按下、松开都会被发送。如果鼠标不被捕获,消息在窗体得到光标之后发出。否则,消息发送到捕获到鼠标的窗体。
   
xPos = LOWORD(lParam); // 光标的水平位置(X
    yPos = HIWORD(lParam); //
光标的垂直位置(Y

3.     鼠标消息的关系理解

无标题窗口拖动,我们一般是采用:
响应WM_NCHITTEST消息,返回HTCAPTION来实现。
但是,如果在这同时还要处理鼠标的消息,如WM_LBUTTONDOWNWM_LBUTTONUPWM_RBUTTONUPWM_MOUSEMOVE,你会发现,这些消息都收不到了。

因为你在WM_NCHITTEST中处理了鼠标消息,把他定位成HTCAPTION,也就是鼠标在标题栏上,而标题栏属于非客户区(NC;
  
非客户区的事件消息都是以WM_NC开头的。也就是说,当你的WM_NCHITTEST返回HTCAPTION时,原来可以用WM_LBUTTONUP处理的消息,你只能用WM_NCLBUTTONUP来处理。
   
自然是同时处理WM_NCHITTESTWM_NCRBUTTONUP,而不处理WM_RBUTTONUP

4.     鼠标钩子的使用

 

 

5.     参考资料

MOUSEHOOKSTRUCT
http://baike.baidu.com/view/2764699.htm
WM_NCHITTEST
消息说明
http://blog.csdn.net/zhuzhubin/archive/2009/07/17/4356825.aspx
WM_NCHITTEST
后鼠标消息收不到
http://blog.csdn.net/debehe/archive/2009/08/05/4412959.aspx


 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值