原文链接 -> 传送门
消息含义:
当鼠标移动时,WM_MOUSEMOVE 消息被发送至窗口。如果鼠标没有被捕获,该消息发送到包含鼠标的窗口。如果鼠标被捕获,该消息发送到捕获鼠标的窗口。
窗口通过它的 WindowProc 函数接收消息。
消息定义:
#define WM_MOUSEMOVE 0x0200
参数解析:
wParam:该参数告诉你触发该消息时,其他虚拟键是否被按下。
该参数可以是下表中一个或者多个值:
|
值 |
含义 |
|
MK_CONTROL |
CTRL 键被按下 |
|
MK_LBUTTON |
鼠标左键被按下 |
|
MK_MBUTTON |
鼠标中键被按下 |
|
MK_RBUTTON |
鼠标右键被按下 |
|
MK_SHIFT |
SHIFT 键被按下 |
|
MK_XBUTTON1 |
第一个 X 按钮被按下 |
|
MK_XBUTTON2 |
第二个 X 按钮被按下 |
lParam:低位字节表示相对于客户区左上角的 X 坐标;高位字节表示相对于客户区左上角的 Y 坐标。
返回值:
如果应用程序处理这个消息,它应该返回 0。
备注:
1. 使用下面的代码获取鼠标的水平和垂直位置:
- xPos = GET_X_LPARAM(lParam);
- yPos = GET_Y_LPARAM(lParam);
复制代码
2. 如上面所看到的那样,X 坐标在 lParam 参数的低位字节;Y 坐标在 lParam 参数的高位字节(两个都是有符号值,因为在多萤幕系统上它们可以为负值)。如果 lParam 参数赋值给一个变量,您可以使用 MAKEPOINTS 宏把 lParam 参数转成 POINTS 结构。您也可以使用 GET_X_LPARAM 宏或者 GET_Y_LPARAM 宏提取 X 坐标或者 Y 坐标。
重要:不要使用 LOWORD 宏或者 HIWORD 宏提取鼠标位置的 X 和 Y 坐标,因为在多屏幕系统上这些宏返回错误的结果。多屏幕系统的 X ,Y 坐标可以为负值,而 LOWORD 宏和 HIWORD 宏把坐标认为是无符号数值。
需求:
|
Minimum supported client |
Windows 2000 专业版 [仅桌面应用程序] |
|
Minimum supported server |
Windows 2000 服务器版 [仅桌面应用程序] |
|
Header |
Winuser.h (包含于 Windows.h) |




