包含有关模拟鼠标事件的信息。
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_WHEEL、 MOUSEEVENTF_XDOWN 或 MOUSEEVENTF_XUP, 则 mouseData 应为零。
如果 dwFlags 包含 MOUSEEVENTF_XDOWN 或 MOUSEEVENTF_XUP, 则 mouseData 指定按下或释放了哪些 X 按钮。 此值可以是以下标志的任意组合。
| 价值 | Meaning |
|---|---|
|
XBUTTON1 0x0001 |
设置按下或释放第一个 X 按钮。 |
|
XBUTTON2 0x0002 |
如果按下或释放第二个 X 按钮,则设置。 |
dwFlags
类型:DWORD
一组位标志,用于指定鼠标运动和按钮单击的各个方面。 此成员中的位可以是以下值的任何合理组合。
指定鼠标按钮状态的位标志设置为指示状态更改,而不是正在进行的条件。 例如,如果按下并按住鼠标左键, 则首次 按下左键时设置MOUSEEVENTF_LEFTDOWN,但对于后续动作则不设置。 同样,仅当按钮首次释放时,才会设置 MOUSEEVENTF_LEFTUP 。
不能同时在 dwFlags 参数中同时指定MOUSEEVENTF_WHEEL标志和MOUSEEVENTF_XDOWN或MOUSEEVENTF_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 |
dx 和 dy 成员包含规范化的绝对坐标。 如果未设置标志, dx 和 dy 将包含相对数据(自上次报告位置以来的位置变化)。 无论哪种类型的鼠标或其他指向设备(如果有)都连接到系统,都可以设置或未设置此标志。 有关相对鼠标运动的详细信息,请参阅以下“备注”部分。 |
time
类型:DWORD
事件的时间戳(以毫秒为单位)。 如果此参数为 0,系统将提供自己的时间戳。
dwExtraInfo
类型:ULONG_PTR
与鼠标事件关联的附加值。 应用程序调用 GetMessageExtraInfo 以获取此额外信息。
注解
如果鼠标已移动, 则由 MOUSEEVENTF_MOVE 指示, dx 和 dy 指定有关该移动的信息。 信息指定为绝对或相对整数值。
如果指定 了MOUSEEVENTF_ABSOLUTE 值, 则 dx 和 dy 包含介于 0 和 65,535 之间的规范化绝对坐标。 事件过程将这些坐标映射到显示图面。 坐标 (0,0) 映射到显示图面的左上角:坐标 (65535,65535) 映射到右下角。 在多监视器系统中,坐标映射到主监视器。
如果指定 了MOUSEEVENTF_VIRTUALDESK ,坐标将映射到整个虚拟桌面。
如果未指定 MOUSEEVENTF_ABSOLUTE 值, 则 dx 和 dy 指定相对于上一个鼠标事件(上一个报告位置)的移动。 正值表示鼠标向右移动(或向下):负值表示鼠标向左移动(或向上移动)。
相对鼠标运动受鼠标速度的影响和两鼠标阈值的影响。 用户使用控制面板鼠标属性工作表的指针速度滑块设置这三个值。 可以使用 SystemParametersInfo 函数获取和设置这些值。
系统将两个测试应用于指定的相对鼠标移动。 如果沿 x 轴或 y 轴的指定距离大于第一个鼠标阈值,并且鼠标速度不为零,则系统将距离加倍。 如果沿 x 轴或 y 轴的指定距离大于第二个鼠标阈值,并且鼠标速度等于 2,则系统将应用第一个阈值测试产生的距离加倍。 因此,系统可以将指定的相对鼠标移动沿 x 轴或 y 轴乘以最多四倍。
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
| 支持的最低服务器 | Windows 2000 Server [仅限桌面应用] |
| Header | winuser.h (包括 Windows.h) |
另请参阅
概念
引用