WM_MOUSEWHEEL消息

当鼠标滚轮旋转时发送到焦点窗口。 DefWindowProc 函数将消息传播到窗口的父级。 不应对消息进行内部转发,因为 DefWindowProc 会将其传播到父链,直到找到处理消息的窗口。

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

#define WM_MOUSEWHEEL                   0x020A

参数

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 坐标, LOWORDHIWORD 会将坐标视为无符号数量。

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

增量设置为 120,以允许 Microsoft 或其他供应商生成更精细的方向盘, (一个自由旋转的滚轮,没有) 发送更多的消息,但每个消息中的值较小。 若要使用此功能,可以添加传入增量值 ,直到达到WHEEL_DELTA (, 以便增量轮换获得相同的响应) ,或滚动部分行以响应更频繁的消息。 还可以选择滚动粒度并累积增量,直到达到增量。

请注意,MSH_MOUSEWHEEL没有 fwKeys 否则,参数与 WM_MOUSEWHEEL完全相同。

应用程序将 MSH_MOUSEWHEEL 转发到任何嵌入的对象或控件。 应用程序需要将消息发送到活动嵌入式 OLE 应用程序。 应用程序可以选择将它发送到具有焦点的已启用滚轮的控件。 如果应用程序确实将消息发送到控件,它可以检查返回值以查看消息是否已处理。 如果控件处理消息,则需要返回 TRUE 的值。

要求

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

另请参阅

引用

GET_KEYSTATE_WPARAM

GET_X_LPARAM

GET_Y_LPARAM

GET_WHEEL_DELTA_WPARAM

HIWORD

LOWORD

mouse_event

概念性

鼠标输入

其他资源

GetSystemMetrics

MAKEPOINTS

SystemParametersInfo