使用原始输入同时获取两个鼠标的数据

To get two mice data the same time by using Raw Input

本文关键字:两个 鼠标 数据 原始 输入 获取      更新时间:2023-10-16

Raw输入可以获得两个鼠标的数据,但如果用户同时移动两个鼠标,我似乎只能首先获得被检测到的鼠标的数据而无法获得另一个鼠标的移动信息。

为了获得不同小鼠的鼠标信息,我做了以下操作:

PeekMessage( &msg, c_handle, WM_INPUT, WM_INPUT, PM_NOREMOVE) != 0
GetRawInputData(    (HRAWINPUT)msg.lParam, RID_INPUT, lpb, &dwSize, sizeof(RAWINPUTHEADER)) != dwSize  )

因此,当第一个鼠标手柄被窥视时,只有在停止对第一个鼠标的操作后才能检测到第二个鼠标。

msdn谈到了对可以产生大量原始输入的设备使用缓冲读取。但这种方法本身有很多问题,应该只适用于单个鼠标(设备)上的多个输入

不知道如何在两个鼠标手柄同时移动时查看它们并获取两个鼠标数据。

使用PM_NOREMOVE可能会导致问题。我建议使用GetMessage()或PM_REMOVE。你所描述的应该不是问题,因为我也做过类似的事情,但没有这个问题。

还要确保在wndpoc消息的末尾调用DefRawInputProc()。