2010-02-23 3 views
0

Je ne sais pas comment écrire une bonne question ici, mais, fondamentalement, quelqu'un sait où je peux éventuellement trouver du code source C++ en utilisant ceux-ci pour régler l'état du clavier? Pour une raison quelconque, l'utiliser de la même manière que MSDN sur Windows 7 ne fait rien ... du tout.En utilisant SetKeyboardState avec GetKeyboardState en C++

Code de base:

PBYTE keyState; 

GetKeyboardState(keyState); 

... 

// Later on when I need to set the keyboard state (key pressed etc) back to original: 
SetKeyboardState(keyState); 

et ... rien ne se passe :(

+0

Que voulez-vous dire "rien ne se passe?" – GManNickG

+0

Voir ma réponse [ici] (http://stackoverflow.com/a/16255097/385995) pour une implémentation de ceci en C#. –

Répondre

0

De: http://www.gamedev.net/community/forums/topic.asp?topic_id=43463

Tout d'abord, GetKeyboardState() serait la mauvaise fonction à utiliser parce que Windows a une chance de traiter les messages du clavier (que vous le vouliez ou non), il met à jour les résultats de l'état du clavier pour le prochain appel à GetKeyboardState()

Voici une petite fonction que j'utilise pour connaître l'état des touches du clavier. Attention cependant, en fonction de la vitesse de votre boucle principale, cela peut causer des problèmes si vous ne l'attendez pas.

Vous devez garder une trace si une touche spécifique a été pressée la dernière fois que vous avez appelé la fonction ReadKeyboard(). Si votre boucle interroge le clavier 30 fois par seconde, appuyez une fois sur une touche pour que la touche soit signalée 3 ou 4 fois d'affilée. Plutôt déroutant parfois. Je pensais juste que je le mentionnerais.

void ReadKeyboard(char* keys) 
{ 
    for (int x = 0; x < 256; x++) 
    keys[x] = (char) (GetAsyncKeyState(x) >> 8); 
}