Неблокирующая клавиатура на WinCE с доступом к виртуальной клавиатуре

Я отчаянно ищу решение, которое позволило бы мне читать события клавиатуры неблокирующим образом. Эти события клавиатуры генерируются VIRTUAL KEYBOARD, поставляемым с устройством WinCE. У меня есть консольное приложение, работающее на C ++, где пользователя просят перемещаться по меню с помощью «ESC», «U» и других символов. Сначала я попытался использовать fread и stdin и понял, что он блокирует вызов и ждет возврата каретки. Затем я попытался подключиться к сообщению Windows WM_KEYUP, но так и не получил это сообщение Windows. Кроме того, я пытался использовать QtGUI вместе с событием QKeyEvent, но никогда не получал никаких событий. Интересно, возможно ли вообще получать неблокирующие события клавиатуры на устройстве WinCE. Буду рад, если у Вас появятся предложения!

Ура, Янв


person Jan H.    schedule 26.10.2009    source источник


Ответы (1)


GetAynchKeyState прочитает состояние всей (виртуальной) клавиатуры. В качестве альтернативы вы можете передать дескриптор консоли в WaitForSingleObject с таймаутом 0 миллисекунд. Это всегда будет возвращаться немедленно, но возвращаемое значение сообщит вам, есть ли у клавиатуры ожидание ввода - если он возвращается с истекшим таймаутом, его нет. Если он возвращает WAIT_OBJECT_0, есть ввод, ожидающий чтения. В качестве еще одной альтернативы есть также GetNumberOfConsoleInputEvents, который сообщает вам, сколько входных данных ожидает чтения.

person Jerry Coffin    schedule 26.10.2009