Кто сказал вам, что их нужно использовать вместе? Если ваше приложение зарегистрировано для обработки необработанного ввода, нет абсолютно никаких причин для установки глобальной ловушки. Весь смысл модели необработанного ввода состоит в том, что приложение получает уведомление и обрабатывает необработанный ввод от любого HID, подключенного к компьютеру.
Скорее, вы слушаете сообщение WM_INPUT
, которое отправляется в очередь сообщений приложения для любого зарегистрированного HID, вызывая функцию RegisterRawInputDevices
. После получения этого сообщения ваше приложение должно вызвать функцию GetRawInputData
, используя дескриптор RAWINPUT
, содержащийся в параметре lParam
сообщения WM_INPUT
. Пример кода доступен здесь .
Кроме того, вы можете выполнить буферизованное чтение необработанных данных. Это более полезно для устройств, которые генерируют большое количество входных данных одновременно. При таком подходе вы вызываете функцию GetRawInputBuffer
, которая возвращает массив структур RAWINPUT
. Снова, образец кода доступен здесь .
Актуальное чтение для функций необработанного ввода - здесь, в MSDN .