WM_MOUSEHWHEEL 消息

在鼠标的水平滚轮发生倾斜或旋转时发送给活动窗口。 DefWindowProc 函数将消息传播到窗口的父级。 不应在内部转发消息,因为 DefWindowProc 将它向上传播到父链,直到找到处理它的窗口

窗口通过其 WindowProc 函数接收此消息。

#define WM_MOUSEHWHEEL                  0x020E

参数

wParam

高序字指示滚轮旋转的距离,以 WHEEL_DELTA 的倍数或因子表示,设置为 120。 正值表示滚轮向右旋转;负值表示滚轮向左旋转。

低序字指示各种虚拟键是否已按下。 此参数可使用以下一个或多个值。

含义
MK_CONTROL
0x0008
按下了 CTRL 键。
MK_LBUTTON
0x0001
按下了鼠标左键。
MK_MBUTTON
0x0010
按下了鼠标中键。
MK_RBUTTON
0x0002
按下了鼠标右键。
MK_SHIFT
0x0004
按下了 SHIFT 键。
MK_XBUTTON1
0x0020
按下了第一个 X 按钮。
MK_XBUTTON2
0x0040
按下了第二个 X 按钮。

lParam

低序字指定指针相对于屏幕左上角的 x 坐标。

高序字指定指针相对于屏幕左上角的 y 坐标。

返回值

如果应用程序处理此消息,它应返回零。

备注

使用以下代码获取 wParam 参数中的信息

fwKeys = GET_KEYSTATE_WPARAM(wParam);
zDelta = GET_WHEEL_DELTA_WPARAM(wParam);

使用以下代码获取水平和垂直位置。

xPos = GET_X_LPARAM(lParam); 
yPos = GET_Y_LPARAM(lParam);

如上所述,x 坐标位于返回值的低序位;y 坐标位于高序位(两者都表示有符号值,因为它们在具有多个监视器的系统上可以取负值)。 如果返回值被赋给一个变量,则可以使用 MAKEPOINTS 宏从返回值中获取一个 POINTS 结构。 还可以使用 GET_X_LPARAMGET_Y_LPARAM 宏提取 x 或 y 坐标。

重要

请勿使用 LOWORDHIWORD 宏提取光标位置的 x 和 y 坐标,因为这些宏在具有多个监视器的系统上会返回不正确的结果。 具有多个监视器的系统可以具有负 x 坐标和 y 坐标,LOWORD 和 HIWORD 会将坐标视为无符号数量。

滚轮旋转是 WHEEL_DELTA 的倍数,设置为 120。 这是要执行的操作的阈值,应针对每个增量执行一个此类操作(例如,滚动一个增量)。

增量设置为 120,以允许 Microsoft 或其他供应商构建更精细的分辨率滚轮(例如,一个无槽位的自由旋转轮),从而在每次旋转时发送更多消息,但每条消息中的值较小。 若要使用此功能,要么添加传入的增量值,直到达到 WHEEL_DELTA(以便在增量旋转中获得相同的响应),要么滚动部分行以响应更频繁的消息。 此外,还可以选择滚动粒度并累积增量,直到达到它。

要求

要求
最低受支持的客户端
Windows Vista [仅限桌面应用]
最低受支持的服务器
Windows Server 2008 [仅限桌面应用]
标头
Winuser.h(包括 Windowsx.h)

另请参阅

引用

GET_KEYSTATE_WPARAM

GET_X_LPARAM

GET_Y_LPARAM

GET_WHEEL_DELTA_WPARAM

HIWORD

LOWORD

mouse_event

Conceptual

鼠标输入

其他资源

GetSystemMetrics

MAKEPOINTS

POINTS

SystemParametersInfo