关于鼠标的一些细节知识:
通常,我们发消息时,都是对一个特定的窗口,但是对于鼠标消息却不然:只要鼠标跨越窗口或者在某窗口中按下鼠标按键,那么窗口消息处理程序就会收到鼠标消息,而不管该窗口是否活动或者是否拥有输入焦点。鼠标消息一个有21种:10个显示区域消息,11个非显示区域消息
显示区域鼠标消息
当鼠标移过窗口的显示区域时,窗口消息处理程序收到WM_MOUSEMOVE消息。
当在窗口的显示区域中按下或者释放一个鼠标按键时,窗口消息处理程序会接收到下面这些消息:
| 键 |
按下 |
释放 |
按下(双键) |
| 左 |
WM_LBUTTONDOWN |
WM_LBUTTONUP |
WM_LBUTTONDBLCLK |
| 中 |
WM_MBUTTONDOWN |
WM_MBUTTONUP |
WM_MBUTTONDBLCLK |
| 右 |
WM_RBUTTONDOWN |
WM_RBUTTONUP |
WM_RBUTTONDBLCLK |
只有对三键鼠标,窗口消息处理程序才会收到MBUTTON消息。
对于这些消息,其lParam值均含有鼠标的位置:低字字节为x坐标,高字节为y坐标,这两个坐标是相对于窗口显示区域左上角的位置。您可以用LOWORD和HIWORD宏来提取这些值:
x = LOWORD (lParam) ;
y = HIWORD (lParam) ;
wParam的值指示鼠标按键以及Shift和Ctrl键的状态:

本文详细介绍了Windows程序设计中的鼠标消息处理,包括21种鼠标消息类型,如WM_MOUSEMOVE、WM_LBUTTONDOWN等。鼠标消息不仅在窗口显示区域触发,还包括非显示区域消息。重点讲解了消息参数的意义,例如lParam中的坐标信息和wParam中的按键状态。同时,提到了双击鼠标响应的实现方式,以及如何处理非显示区域消息。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



