使用Windows输入原始鼠标

时间:2012-05-05 13:11:55

标签: c++ windows winapi mouse

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

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

仔细检查RAWMOUSE结构后,我发现lLastX和lLastY是长值,你可以通过它们得到delta。

对我而言,看起来WM_MOUSEMOVE和WM_INPUT是相同的,除了使用WM_INPUT你没有应用加速度(指针弹道)。

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

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

2 个答案:

答案 0 :(得分:9)

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

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

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

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

但是,如果你想控制玩家的POV(观点),或者使用鼠标来控制游戏中的物体,例如宇宙飞船的飞行轭,那么RAWMOUSE数据可以让你获得最佳的机芯鼠标,你可以实现自己的算法,将其转换为飞行轭/ POV运动。

答案 1 :(得分:1)

使用它的主要好处和原因是使用rawInput可以使用两个鼠标或更多。现在我写的小游戏原型设计是由两个玩家/小鼠/小鼠玩的 - 它更复杂但它有效并且它也不错,因为我点头需要链接外部库。