WinCE上的非阻塞键盘访问虚拟键盘

时间:2009-10-26 13:48:48

标签: c++ keyboard windows-ce virtual nonblocking

我正在拼命寻找能够以非阻塞方式读取键盘事件的解决方案。这些键盘事件由WinCE设备附带的VIRTUAL KEYBOARD生成。我有一个用C ++运行的控制台应用程序,要求用户通过菜单通过'ESC','U'和其他字符进行导航。我首先尝试使用fread和stdin,并意识到它是阻塞调用并等待回车。然后我试图连接到Windows消息WM_KEYUP,但我从来没有接收过这个窗口消息。此外,我尝试将QtGUI与事件QKeyEvent一起使用,但我从未收到过任何事件。我想知道是否通常可以在WinCE设备上接收非阻塞键盘事件。如果您有任何建议,我会很高兴的!

干杯, Jan

1 个答案:

答案 0 :(得分:1)

GetAynchKeyState将读取整个(虚拟)键盘的状态。或者,您可以将控制台的句柄传递给WaitForSingleObject,超时为0毫秒。这将始终立即返回,但返回值将告诉您键盘是否有输入等待 - 如果它返回时超时已到期,则没有。如果它返回WAIT_OBJECT_0,则表示有等待读取的输入。作为另一种选择,还有GetNumberOfConsoleInputEvents,它告诉您等待读取的输入量。