2009-10-26 11 views
0

Je cherche désespérément une solution qui me permet de lire les événements clavier de manière non bloquante. Ces événements Keyboard sont générés par un VIRTUAL KEYBOARD fourni avec le périphérique WinCE. J'ai une application de console fonctionnant en C++, où l'on demande à l'utilisateur de naviguer par 'ESC', 'U' et d'autres caractères à travers le menu. J'ai d'abord essayé d'utiliser fread et stdin et j'ai réalisé qu'il bloque l'appel et attend un retour chariot. Ensuite, j'ai essayé de me connecter au message Windows WM_KEYUP, mais je n'ai jamais reçu ce message Windows. En outre, j'ai essayé d'utiliser QtGUI avec l'événement QKeyEvent, mais je ne reçois aucun événement. Je me demande s'il est généralement possible de recevoir des événements clavier non bloquants sur un périphérique WinCE. Je serais heureux si vous avez des suggestions!Clavier non bloquant sur WinCE accédant au clavier virtuel

Cheers, Jan

Répondre

1

GetAynchKeyState liront l'état de l'ensemble du clavier (virtuel). Alternativement, vous pouvez passer un handle à la console à WaitForSingleObject, avec un délai de 0 millisecondes. Cela reviendra toujours immédiatement, mais la valeur de retour vous dira si le clavier a une entrée en attente - si elle revient avec le délai expiré, il n'y en a pas. S'il renvoie WAIT_OBJECT_0, une entrée est en attente de lecture. Comme encore une autre alternative, il y a aussi GetNumberOfConsoleInputEvents, qui vous indique combien d'entrée attend d'être lu.