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_WHEEL、 MOUSEEVENTF_XDOWN或 MOUSEEVENTF_XUP,则 mouseData 应为零。
如果 dwFlags 包含 MOUSEEVENTF_XDOWN 或 MOUSEEVENTF_XUP,则 mouseData 指定按下或释放的 X 按钮。 此值可以是以下标志的任意组合。
Value | 含义 |
---|---|
XBUTTON1 0x0001 |
设置是否按下或释放第一个 X 按钮。 |
XBUTTON2 0x0002 |
设置是否按下或释放第二个 X 按钮。 |
dwFlags
类型:DWORD
一组位标志,用于指定鼠标运动和按钮单击的各个方面。 此成员中的位可以是以下值的任意合理组合。
指定鼠标按钮状态的位标志设置为指示状态的更改,而不是正在进行的条件。 例如,如果按下并按住鼠标左键,则会在首次按下左键时设置 MOUSEEVENTF_LEFTDOWN ,但不设置为后续动作。 同样, 仅在 首次释放按钮时设置MOUSEEVENTF_LEFTUP。
不能在 dwFlags 参数中同时指定 MOUSEEVENTF_WHEEL 标志和 MOUSEEVENTF_XDOWN 或 MOUSEEVENTF_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 |
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 轴将指定的相对鼠标移动乘以最多四倍。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
标头 | winuser.h (包括 Windows.h) |
请参阅
概念性
引用