Необработанный ввод может получить данные о двух мышах, но если пользователь одновременно перемещает двух мышей, кажется, что я могу получить только данные об обнаруженной мыши первой и не могу получить информацию о перемещении другой мыши.
Чтобы получить информацию о мышах разных мышей, вот что я сделал:
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 для устройств, которые могут производить большое количество необработанного ввода. Но этот метод имеет много проблем сам по себе и должен работать только для нескольких входов на одной мыши (устройство)
Не уверен, как посмотреть две ручки мыши и получить две данные мыши, когда они перемещаются одновременно.
Возможно использование PM_NOREMOVE вызывает проблему. Я предлагаю либо использовать GetMessage () или PM_REMOVE. То, что вы описываете, не должно быть проблемой, так как я сделал нечто подобное и не имел этой проблемы.
Также убедитесь, что вы вызываете DefRawInputProc () в конце сообщения wndproc.