mouse_event和绝对坐标

If MOUSEEVENTF_ABSOLUTE value is specified, dx and dy contain normalized absolute coordinates between 0 and 65,535. The event procedure maps these coordinates onto the display surface. Coordinate (0,0) maps onto the upper-left corner of the display surface, (65535,65535) maps onto the lower-right corner.


如果在调用mouse_event时指定了MOUSEEVENTF_ABSOLUTE  ,dx 和 dy 就是从0到65535的绝对坐标。这个事件的作用是将坐标映射到显示器表面。(0,0)坐标对应着显示器表面的左上角,(65535,65535)坐标对应着显示器表面的右下角。


If the MOUSEEVENTF_ABSOLUTE value is not specified, dx and dy specify relative motions from when the last mouse event was generated (the last reported position). Positive values mean the mouse moved right (or down); negative values mean the mouse moved left (or up).


原文:

http://msdn.microsoft.com/en-us/library/ms646260(VS.85).aspx

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`mouse_event` 是 Windows API 中的一个函数,可以用于模拟鼠标操作,例如鼠标移动、点击等。 函数声明如下: ```c++ VOID mouse_event( DWORD dwFlags, DWORD dx, DWORD dy, DWORD dwData, ULONG_PTR dwExtraInfo ); ``` 其中,各参数的含义如下: - `dwFlags`:鼠标操作标识,可以是以下常量之一: - `MOUSEEVENTF_ABSOLUTE`:使用绝对坐标进行操作 - `MOUSEEVENTF_LEFTDOWN`:按下鼠标左键 - `MOUSEEVENTF_LEFTUP`:释放鼠标左键 - `MOUSEEVENTF_MIDDLEDOWN`:按下鼠标中键 - `MOUSEEVENTF_MIDDLEUP`:释放鼠标中键 - `MOUSEEVENTF_RIGHTDOWN`:按下鼠标右键 - `MOUSEEVENTF_RIGHTUP`:释放鼠标右键 - `MOUSEEVENTF_MOVE`:移动鼠标 - `MOUSEEVENTF_WHEEL`:滚动鼠标滚轮 - `MOUSEEVENTF_XDOWN`:按下鼠标 X 按钮 - `MOUSEEVENTF_XUP`:释放鼠标 X 按钮 - `dx`:鼠标操作的水平坐标,如果 `dwFlags` 设置了 `MOUSEEVENTF_ABSOLUTE` 标识,则该参数指定屏幕上的绝对坐标,否则指定相对坐标。 - `dy`:鼠标操作的垂直坐标,含义同 `dx`。 - `dwData`:鼠标操作附加数据,例如滚动鼠标滚轮时的滚轮值。 - `dwExtraInfo`:额外信息,一般情况下可以设置为 0。 下面是一个示例,模拟鼠标点击: ```c++ // 从屏幕左上角移动鼠标到 (100,100) 位置,然后按下并释放鼠标左键 mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 100 * 65535 / GetSystemMetrics(SM_CXSCREEN), 100 * 65535 / GetSystemMetrics(SM_CYSCREEN), 0, 0); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); ``` 需要注意的是,`MOUSEEVENTF_ABSOLUTE` 标识下的坐标值需要进行转换,上述代码中使用了 `GetSystemMetrics` 函数获取屏幕宽高来进行转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值