【问题标题】:Raw mouse input with WindowsWindows 的原始鼠标输入
【发布时间】:2012-05-05 13:11:54
【问题描述】:

阅读这篇文章“利用高清鼠标移动”-http://msdn.microsoft.com/en-us/library/windows/desktop/ee418864(v=vs.100).aspx,我推测应该使用原始输入从输入设备获得更精确的读数。

文章指出,WM_MOUSEMOVE 的主要缺点是受限于屏幕分辨率。

仔细检查 RAWMOUSE 结构后,我发现 lLastX 和 lLastY 是长值,您可以通过它们获得增量。

在我看来,WM_MOUSEMOVE 和 WM_INPUT 是一样的,除了 WM_INPUT 没有应用加速度(指针弹道学)。

WM_MOUSEMOVE 和 WM_INPUT 是否都受限于屏幕分辨率?

如果是这样,使用 WM_INPUT 有什么好处?

【问题讨论】:

    标签: c++ windows winapi mouse


    【解决方案1】:

    RAWMOUSE 根据鼠标的原始分辨率为您提供鼠标的逻辑坐标。

    也就是说,您可以看到鼠标的实际移动。

    Windows 将使用鼠标速度和加速度(弹道)设置来更新光标位置。因为当然这两者没有联系 - 必须解释鼠标的明显移动以生成光标移动,否则如何支持多个鼠标?

    如果您希望控制指针,据我所知,没有理由重复 Windows 鼠标弹道计算。就让windows来做吧。因此,为了控制指针,您应该只使用 WM_MOUSEMOVE。也就是说,除非您希望在应用程序中禁用鼠标加速设置。

    但是,如果您想控制玩家的 POV(视点),或使用鼠标来控制游戏中的物体(例如飞船飞行轭),那么 RAWMOUSE 数据可为您提供最佳的移动访问权限鼠标,您可以实现自己的算法将其转换为飞行 yoke/POV 运动。

    【讨论】:

      【解决方案2】:

      使用它的主要好处和理由是,使用 rawInput 您可以使用两个或更多鼠标。目前我正在编写一个小游戏原型,旨在由两个玩家用两只鼠标/鼠标玩 - 它更复杂但它可以工作而且还不错,因为我确实需要链接外部库。

      【讨论】:

      • 您能详细说明一下在同一个游戏中使用 2 只鼠标吗?你如何将两只老鼠的数据分开并将它们用于不同的事情?当我将两只鼠标连接到运行 Windows 的 PC 时,它们都控制同一个指针,而我不想要。在此先感谢,斯特凡
      • 我也很想知道您是如何将它们分开的?如果我能复制你的成功,我正在做一些非常有帮助的事情。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多