WinCE上的非阻塞键盘访问虚拟键盘
问题描述:
我拼命寻找一种解决方案,使我能够以非阻塞的方式阅读键盘事件。这些键盘事件由WinCE设备附带的VIRTUAL KEYBOARD
生成。我有一个以C++运行的控制台应用程序,用户被要求通过菜单通过“ESC”,“U”和其他字符进行导航。我第一次尝试使用fread和stdin,并意识到它阻止了呼叫并等待回车。然后我尝试连接到WM_KEYUP窗口消息,但我从来没有收到这个Windows消息。此外,我尝试使用QtGUI与事件QKeyEvent,但我从来没有收到任何事件。我想知道在WinCE设备上是否可以接收非阻塞键盘事件。如果您有任何建议,我会很高兴!WinCE上的非阻塞键盘访问虚拟键盘
干杯, 扬
答
GetAynchKeyState
会读整个(虚拟)键盘的状态。或者,您可以将控制台传递到控制台WaitForSingleObject
,超时时间为0毫秒。这将始终立即返回,但返回值会告诉您键盘是否有输入等待 - 如果超时过期返回,则不会。如果它返回WAIT_OBJECT_0
,则有输入等待读取。作为另一种选择,还有GetNumberOfConsoleInputEvents
,它告诉你有多少输入等待读取。