Можно ли использовать Windows Raw Input API без окна (т.е. из консольного приложения)? - PullRequest
4 голосов
/ 23 июля 2011

Можно ли использовать Windows Raw Input API без окна (т.е. из консольного приложения)?

Я пытался использовать RegisterRawInputDevices, но мои циклы сообщений не получают каких-либо событий от GetMessage и, следовательно, просто "зависают" там.

Ответы [ 2 ]

6 голосов
/ 25 июля 2011

Таким образом, я сделал это (не уверен, что это наиболее удобный способ ...):

Я запустил поток (для задачи заполнения моего входного буфера).В этой теме я создал окно только для сообщений (оно скрыто и может получать входные данные) с соответствующим классом окна.

Затем зарегистрировал необработанные устройства ввода.

Этот поток имеетсвой собственный цикл обработки сообщений.В WindowProc окна-класса я обработал входные данные.

(Для буфера вы можете использовать boost: round_buffer, это ROCKS!: D)

В этом решении вам понадобилосьесть окно, но похоже, что нет.:)

Надеюсь, это поможет.

2 голосов
/ 23 июля 2011

Вы имеете в виду RegisterRawInputDevices?

Поскольку структура RAWINPUTDEVICE требует, чтобы вы указали HWND для получения сообщений WM_INPUT, нет, это невозможноэто без окна.

Консольные приложения могут создавать окна, и окно, вероятно, может получать WM_INPUT пока скрыто, но вам действительно нужно окно.

...