MOUSEINPUT 结构 (winuser.h)

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

Syntax

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

Members

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 按钮。 此值可以是以下标志的任意组合。

价值 Meaning
XBUTTON1
0x0001
设置按下或释放第一个 X 按钮。
XBUTTON2
0x0002
如果按下或释放第二个 X 按钮,则设置。

dwFlags

类型:DWORD

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

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

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

价值 Meaning
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 轴乘以最多四倍。

要求

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

另请参阅

概念

GetMessageExtraInfo

输入

键盘输入

引用

SendInput