1625-5 王子昂 总结《2018年1月9日》 【连续第466天总结】
A. Windows消息系统-鼠标消息
B.
概述
鼠标消息分为客户区消息和非客户区消息
动作包括单击、双击、拖拽
Windows为鼠标定义了21种消息,包括10个客户区消息,10个非客户区消息和1个非客户区命中测试消息
客户区鼠标消息
在客户区按下或释放鼠标时,窗口会接收到9种消息
包括左、中、右键的按下、释放、双击
剩下的一种则是鼠标在客户区移动时接收到的WM_MOUSEMOVE消息
以上所有消息的lParam值中均含有鼠标以客户区为坐标系的位置坐标,横坐标x为低位,纵坐标y为高位。坐标系原点位于客户区左上角,右下角为(X_MAX, Y_MAX)
而wParam的值指示鼠标键、Shift键和Ctrl键的状态,当按下其他5个键时wParam会在特定的位上置1
位以宏MK_LBUTTON等指示
取用方法为if(wParam&MK_SHIFT)
鼠标移动时会不断发出WM_MOUSEMOVE消息,但不是每个像素,而是取决于硬件的设置
非客户区鼠标消息
10个消息的种类与客户区鼠标消息相同,分别为3x3个击键消息和1个移动消息
但是附带参数完全不同
lParam值中依然是鼠标的位置,但此时的坐标系为屏幕,同样低位为横轴x,高位为纵轴y。坐标系原点位于屏幕左上角,右下角为(X_MAX, Y_MAX)
客户区坐标和屏幕坐标可以通过ScreenToClient和ClientToScreen两个API进行转换
wParam值中还是移动或击键时的位置,但是一些区域的值&#