鼠标消息分类:
1.基本鼠标消息
WM_LBUTTONDOWN-鼠标左键按下
WM_LBUTTONUP-鼠标左键抬起
WM_RBUTTONDOWN-鼠标右键按下
WM_RBUTTONUP-鼠标右键抬起
附带消息:
wParam:其他按键的状态,例如CTRL/SHIFT等
lParam:鼠标的位置,窗口客户区坐标系。
LOWORD x坐标位置
HIWORD y坐标位置
一般情况鼠标按下、抬起成对出现。在鼠标移动过程中,会根据移动速度生产一系列的WM_MOUSEMOVE消息
2.双击消息
WM_LBUTTONDBLCLK-鼠标左键双击
WM_RBUTTONDBLCLK-鼠标右键双击
附带消息:
wParam-其他按键状态,例如CTRL/Shift等
lParam-鼠标位置,窗口客户区坐标系
LOWORD(lParam) //X坐标位置
HIWORD(lParam) //Y坐标位置
产生消息顺序
以左键双击为例:
WM_LBUTTONDOWN
WM_LBUTTONUP
WM_LBUTTONDBLCLK
WM_LBUTTONUP
使用时需要在注册窗口类的时候添加CS_DBLCLKS风格
//窗口类的style必须添加CS_DBLCLKS样式
wnd.style = CS_HREDRAW | CS_VREDRAW |CS_DBLCLKS;
3.滚轮消息
WM_MOUSEWHEEL-鼠标滚轮消息
附带信息:
wParam:
LOWORD-其他按键的状态
HIWORD-滚轮的偏移量,通过正负值表示滚轮的方向。
正:向前滚动
负:向后滚动
lParam:鼠标当前的位置,屏幕坐标系
LOWORD x坐标
HIWORD y坐标
使用:通过偏移量,获取滚轮的方向和距离
定时器消息 WM_TIMER
生产时间:
在程序中创建定时器,当到达时间间隔时,定时器会向程序发送一个WM_TIMER消息。定时器的精度是毫秒,但是准确度很低。例如设置时间间隔为1000ms,但是会在非1000毫秒到过消息。
附带信息:
wParam:定时器ID
lParam:定时器处理函数的指针
创建销毁定时器
//创建定时器
UINT_PTR SetTimer(HWND hwnd, //定时器窗口句柄UINT_PTR nIDEvent, //定时器IDUINT uElapse,//时间间隔TIMERPROC lpTimerFunc //定时器处理函数指针(一般不用,为NULL)
) //创建成功返回非0值
//销毁定时器
BOOL KillTimer(HWND hwnd, //定时器窗口句柄UINT_PTR uIDEvent //定时器ID
上一篇:【BOOST C++ 13 并行编程】(4) Futures和 Promises线程
下一篇:Google Earth Engine(GEE)—— NDVI的CannyEdgeDetector边缘检测适用性分析