让屏幕尺寸,c ++和windows无限制地控制鼠标位置

1 c++ mouse

我目前正在编写一个c ++控制台应用程序,它定期抓取鼠标位置并将其发送到另一个可视应用程序,用于实时驱动一些3D图形.可视应用程序是封闭源代码,无法在其有限的插件功能之外进行更改.

目前我正在使用GetCursorPos()函数,该函数既简单又快速,但我遇到的问题是所有数据都是根据1920x1600的当前屏幕分辨率进行剪裁,以便所有x值都在0到1920之间无论鼠标移动多远,所有y值都在0到1600之间.

我需要在屏幕边缘剪切之前获取鼠标位置,或者可能用于计算当前位置的增量.

我已经看到了一些对Windows MouseMove事件的引用,但我真的不想实现一个窗口使其工作或特别是让它作为活动来接收这些事件.

我在Windows环境中工作,语言变化是不可行的.

Ski*_*izz 6

我可能错了,但是在Win32的土地上,当鼠标位于屏幕边缘时,你不会得到鼠标移动信息,因为鼠标不会移动.获得无限鼠标区域的常用方法是执行以下操作:

  1. 隐藏鼠标,获得独占访问权限并记录位置
  2. 中心鼠标到窗口
  3. 当鼠标移动时,从屏幕中心到当前位置获得增量
  4. 再次将鼠标中心转到窗口
  5. 下一次鼠标移动应该有一个(0,0)的delta,所以忽略它
  6. 转到3直到鼠标移动操作结束
  7. 重置位置,显示鼠标并释放独占访问权限

如果你没有隐藏鼠标,那么你会看到鼠标移动一小段距离然后再回到中心位置,这看起来很讨厌.

此方法确实需要一个消息泵用于鼠标移动消息,因此控制台应用程序的想法可能不适用于此.你能创建一个全屏隐形窗口来抓取鼠标吗?