BS_C3
Messages postés12Date d'inscriptionvendredi 29 juillet 2005StatutMembreDernière intervention 3 avril 2008 6 déc. 2006 à 00:26
Bonjour!
N'ayant pas reussi a faire avec le GetKeyState, j'ai trouve une autre méthode beaucoup plus simple: faire un double getch().En declarant char key1 getch() et char key2 getch(), quand on appuie une fois sur une des touches "fleche", key1 va dire que la touche correspond a une fleche, key2 dira a quelle fleche cette touche correspond. C'est valable pour n'importe que touche spéciale (c'est à dire, toute touche non alphanumerique).
Voila! =)
Merci beaucoup pour votre aide
En utilisant ce test, quand j'appuie une fois sur la fleche droite ou gauche, les messages de test apparaissent pleeeeins de fois.
Comment corriger cela pour que ça n'arrive qu'une seule fois?
Merci!
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 20092 4 déc. 2006 à 11:38
Donc quand on veut utiliser une fonction de l' API on se documente bien avant sur msdn par exemple
The GetKeyState function retrieves the status of the specified virtual
key. The status specifies whether the key is up, down, or toggled (on,
off—alternating each time the key is pressed).
SHORT GetKeyState(
int nVirtKey );
Donc on voit que la fonction retourne un SHORT et qu'elle nous informe que l'état de la touche, enfoncée, relâchée, ou activée si la touche concernée et une touche du genre Maj ou Verr Num etc...
Return Value
The return value specifies the status of the specified virtual key, as
follows:
<li>If the high-order bit is 1, the key is down; otherwise, it is up.
</li><li>If the low-order bit is 1, the key is toggled. A key, such as the CAPS LOCK
key, is toggled if it is turned on. The key is off and untoggled if the
low-order bit is 0. A toggle key's indicator light (if any) on the keyboard will
be on when the key is toggled, and off when the key is untoggled.</li>
Donc le bit de poids fort est à 1 si la touche est pressée
Sinon, elle est relâchée
Comment tester le bit de poids fort ???
un SHORT c'est codé sur 16 bits sur un système 32 bits ( les plus courants pour l'instant ) donc
1000 0000 0000 0000
Pour récupérer le bit de poids fort on fait
GetKeyState(VK_LEFT) & 0x8000
Et voilà, tu testes s'il est à 1 ou à 0
ULARGE_INTEGERJokyQi=QI("Joky"