C++ 使用Windows的原始鼠标输入

C++ 使用Windows的原始鼠标输入,c++,windows,winapi,mouse,C++,Windows,Winapi,Mouse,读了这篇文章“利用高清晰度鼠标移动”,我猜测应该使用原始输入从输入设备获得更精确的读数 文章指出WM_MOUSEMOVE的主要缺点是它仅限于屏幕分辨率 仔细检查RAWMOUSE结构后,我发现lLastX和lLastY是长值,通过它们可以得到增量 对我来说,看起来WM_MOUSEMOVE和WM_输入是一样的,除了WM_输入,你不会得到加速度(指针弹道) WM_MOUSEMOVE和WM_输入是否都限于屏幕分辨率 如果是这样,使用WM_输入有什么好处?RAWMOUSE根据鼠标的本机分辨率为您提供鼠标的

读了这篇文章“利用高清晰度鼠标移动”,我猜测应该使用原始输入从输入设备获得更精确的读数

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

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

对我来说,看起来WM_MOUSEMOVE和WM_输入是一样的,除了WM_输入,你不会得到加速度(指针弹道)

WM_MOUSEMOVE和WM_输入是否都限于屏幕分辨率


如果是这样,使用WM_输入有什么好处?

RAWMOUSE根据鼠标的本机分辨率为您提供鼠标的逻辑坐标

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

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

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


但是,如果您想要控制玩家的POV(视角),或使用鼠标控制游戏中的对象,如宇宙飞船飞行轭,则RAWMOOSE数据将为您提供鼠标移动的最佳访问权限,您可以实现自己的算法,将其转换为飞行轭/POV运动。

使用它的主要好处和原因是,对于RAW输入,您可以使用两个或更多鼠标。目前,我编写了一个小游戏原型,该原型设计为两名玩家使用两个鼠标/鼠标进行游戏-它更复杂,但效果不错,因为我确实不需要链接外部LIB。

您能否详细介绍一下在同一游戏中使用两个鼠标的情况?如何将来自两个鼠标的数据分开并用于不同的用途?当我将两个鼠标连接到运行windows的PC上时,它们都控制着同一个指针,这是我不想要的。提前谢谢,StefanI也很想知道你是如何把它们分开的?如果我能复制你的成功,我正在做一些非常有帮助的事情。