Чтобы получить данные двух мышей одновременно, используя Raw Input

Необработанный ввод может получить данные о двух мышах, но если пользователь одновременно перемещает двух мышей, кажется, что я могу получить только данные об обнаруженной мыши первой и не могу получить информацию о перемещении другой мыши.

Чтобы получить информацию о мышах разных мышей, вот что я сделал:

PeekMessage( &msg, c_handle, WM_INPUT, WM_INPUT, PM_NOREMOVE) != 0

GetRawInputData(    (HRAWINPUT)msg.lParam, RID_INPUT, lpb, &dwSize, sizeof(RAWINPUTHEADER)) != dwSize  )

Таким образом, когда первый дескриптор мыши просматривается, вторую мышь можно обнаружить только после остановки операции с первой мышью.

MSDN говорили об использовании Buffered Read для устройств, которые могут производить большое количество необработанного ввода. Но этот метод имеет много проблем сам по себе и должен работать только для нескольких входов на одной мыши (устройство)

Не уверен, как посмотреть две ручки мыши и получить две данные мыши, когда они перемещаются одновременно.

0

Решение

Возможно использование PM_NOREMOVE вызывает проблему. Я предлагаю либо использовать GetMessage () или PM_REMOVE. То, что вы описываете, не должно быть проблемой, так как я сделал нечто подобное и не имел этой проблемы.

Также убедитесь, что вы вызываете DefRawInputProc () в конце сообщения wndproc.

2

Другие решения


По вопросам рекламы [email protected]