2012-05-05 37 views
3

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

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

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

对我来说,它看起来像WM_MOUSEMOVE和WM_INPUT是相同的,除了WM_INPUT你没有得到应用加速(指针弹道学)。

是否将WM_MOUSEMOVE和WM_INPUT限制为屏幕分辨率?

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

回答

8

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

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

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

如果你想控制一个指针,据我所知,没有理由复制Windows鼠标的弹道计算。让窗户做到这一点。因此,为了控制指针,你应该只使用WM_MOUSEMOVE。也就是说,除非您希望在应用程序中禁用鼠标加速设置。然而,如果您想要控制玩家的视角(POV),或者使用鼠标来控制游戏中的对象,例如太空飞船的飞行轭,那么RAWMOUSE数据将为您提供最佳的访问权限鼠标移动,并且您可以实现自己的算法将其转换为飞行轭/ POV运动。

0

使用它的主要好处和原因是,使用rawInput可以使用两个鼠标或更多。目前我编写的小游戏原型设计为由两名玩家与两个鼠标/小鼠玩 - 它更复杂,但它的工作原理并不坏,因为我点头需要链接外部库。

+0

你能详细介绍一下在同一场比赛中使用2只老鼠吗?你如何将两只老鼠的数据分开并用于不同的事情?当我将两只鼠标连接到运行Windows的PC时,它们都控制相同的指针,而我不想要。在此先感谢,Stefan – noste99