MOUSEINPUT 结构 (winuser.h)

包含有关模拟鼠标事件的信息。

语法

typedef struct tagMOUSEINPUT {
  LONG      dx;
  LONG      dy;
  DWORD     mouseData;
  DWORD     dwFlags;
  DWORD     time;
  ULONG_PTR dwExtraInfo;
} MOUSEINPUT, *PMOUSEINPUT, *LPMOUSEINPUT;

成员

dx

类型: LONG

鼠标的绝对位置,或自上次生成鼠标事件以来的运动量,具体取决于 dwFlags 成员的值。 绝对数据指定为鼠标的 x 坐标;相对数据指定为移动的像素数。

dy

类型: LONG

鼠标的绝对位置,或自上次生成鼠标事件以来的运动量,具体取决于 dwFlags 成员的值。 绝对数据指定为鼠标的 y 坐标;相对数据指定为移动的像素数。

mouseData

类型:DWORD

如果 dwFlags 包含 MOUSEEVENTF_WHEEL,则 mouseData 指定滚轮移动量。 正值表示滚轮向前旋转(远离用户);负值表示滚轮向后旋转(朝向用户)。 一键滚轮定义为 WHEEL_DELTA,即 120。

Windows Vista:如果 dwFlags 包含 MOUSEEVENTF_HWHEEL,则 dwData 指定滚轮移动量。 正值表示滚轮向右旋转;负值表示滚轮向左旋转。 一键滚轮定义为 WHEEL_DELTA,即 120。

如果 dwFlags 不包含 MOUSEEVENTF_WHEELMOUSEEVENTF_XDOWNMOUSEEVENTF_XUP,则 mouseData 应为零。

如果 dwFlags 包含 MOUSEEVENTF_XDOWNMOUSEEVENTF_XUP,则 mouseData 指定按下或释放的 X 按钮。 此值可以是以下标志的任意组合。

Value 含义
XBUTTON1
0x0001
设置是否按下或释放第一个 X 按钮。
XBUTTON2
0x0002
设置是否按下或释放第二个 X 按钮。

dwFlags

类型:DWORD

一组位标志,用于指定鼠标运动和按钮单击的各个方面。 此成员中的位可以是以下值的任意合理组合。

指定鼠标按钮状态的位标志设置为指示状态的更改,而不是正在进行的条件。 例如,如果按下并按住鼠标左键,则会在首次按下左键时设置 MOUSEEVENTF_LEFTDOWN ,但不设置为后续动作。 同样, 仅在 首次释放按钮时设置MOUSEEVENTF_LEFTUP。

不能在 dwFlags 参数中同时指定 MOUSEEVENTF_WHEEL 标志和 MOUSEEVENTF_XDOWNMOUSEEVENTF_XUP 标志,因为它们都需要使用 mouseData 字段。

Value 含义
MOUSEEVENTF_MOVE
0x0001
发生了移动。
MOUSEEVENTF_LEFTDOWN
0x0002
按下了左侧按钮。
MOUSEEVENTF_LEFTUP
0x0004
左按钮已释放。
MOUSEEVENTF_RIGHTDOWN
0x0008
按下了向右按钮。
MOUSEEVENTF_RIGHTUP
0x0010
右侧按钮已松开。
MOUSEEVENTF_MIDDLEDOWN
0x0020
按下中间按钮。
MOUSEEVENTF_MIDDLEUP
0x0040
中间按钮已释放。
MOUSEEVENTF_XDOWN
0x0080
按下了 X 按钮。
MOUSEEVENTF_XUP
0x0100
已释放 X 按钮。
MOUSEEVENTF_WHEEL
0x0800
如果鼠标有滚轮,则滚轮已移动。 移动量在 mouseData 中指定。
MOUSEEVENTF_HWHEEL
0x1000
如果鼠标有滚轮,则方向盘是水平移动的。 移动量在 mouseData 中指定。
Windows XP/2000:不支持此值。
MOUSEEVENTF_MOVE_NOCOALESCE
0x2000
不会合并WM_MOUSEMOVE消息。 默认行为是合并 WM_MOUSEMOVE 消息。
Windows XP/2000:不支持此值。
MOUSEEVENTF_VIRTUALDESK
0x4000
将坐标映射到整个桌面。 必须与 MOUSEEVENTF_ABSOLUTE 一起使用。
MOUSEEVENTF_ABSOLUTE
0x8000
dxdy 成员包含规范化的绝对坐标。 如果未设置标志, dxdy 包含相对数据 (自上次报告的位置) 更改。 无论哪种类型的鼠标或其他指针设备(如果有)连接到系统,都可以设置或不设置此标志。 有关相对鼠标运动的详细信息,请参阅以下“备注”部分。

time

类型:DWORD

事件的时间戳(以毫秒为单位)。 如果此参数为 0,则系统将提供自己的时间戳。

dwExtraInfo

类型: ULONG_PTR

与鼠标事件关联的附加值。 应用程序调用 GetMessageExtraInfo 以获取此额外信息。

备注

如果鼠标已移动( 由MOUSEEVENTF_MOVE指示), dxdy 将指定有关该移动的信息。 信息指定为绝对或相对整数值。

如果指定 了MOUSEEVENTF_ABSOLUTE 值, 则 dxdy 包含介于 0 和 65,535 之间的规范化绝对坐标。 事件过程将这些坐标映射到显示图面。 坐标 (0,0) 映射到显示图面的左上角;坐标 (65535,65535) 映射到右下角。 在多监视器系统中,坐标映射到主监视器。

如果指定 了MOUSEEVENTF_VIRTUALDESK ,则坐标将映射到整个虚拟桌面。

如果未指定 MOUSEEVENTF_ABSOLUTE 值, dxdy 指定相对于上一个鼠标事件 (上一个报告位置) 的移动。 正值表示鼠标向右移动 (或向下移动) ;负值表示鼠标向左移动 (或向上移动) 。

相对鼠标运动受鼠标速度和双鼠标阈值的影响。 用户使用控制面板的“鼠标属性”工作表的“指针速度”滑块设置这三个值。 可以使用 SystemParametersInfo 函数获取和设置这些值。

系统会对指定的相对鼠标移动应用两个测试。 如果沿 x 或 y 轴的指定距离大于第一个鼠标阈值,并且鼠标速度不为零,则系统会将距离加倍。 如果沿 x 或 y 轴的指定距离大于第二个鼠标阈值,并且鼠标速度等于 2,系统会将应用第一个阈值测试得出的距离加倍。 因此,系统可以沿 x 或 y 轴将指定的相对鼠标移动乘以最多四倍。

要求

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

请参阅

概念性

GetMessageExtraInfo

INPUT

键盘输入

引用

SendInput