Comment puis-je détecter si une touche est enfoncée par l'utilisateur en C++ (console)?
Je suis en train d'écrire un C++ CLI demande comment puis-je détecter si une touche est enfoncée par l'utilisateur. J'ai vu qu'en c#, mais comment peut-on mettre en œuvre en c++
while(1)
{
while(/* code to check if any key is pressed*/)
{ //rest of the code
//sleep function
}
}
Astuce: comme dans l'interface de ligne de jeux de déplacer ou de prendre des mesures lorsqu'une touche est enfoncée ou ne pas faire quelque chose si l'entrée n'est pas donnée.
- J'ai trouvé que l'on peut également utiliser _khbit fonction de() en c++. _khbit est égale à 1 si une touche est enfoncée. Vous devez effacer l'_khbit tampon d'autre, il restera 1. Méthode pour la compensation, c'est le caractère = getch(); Cela permettra d'enregistrer la dernière saisie de la clé dans le caractère que vous pouvez comparer et décider de l'action à effectuer sur la clé.
Vous devez vous connecter pour publier un commentaire.
Sur windows, au moins, vous pouvez utiliser GetKeyState
nous pouvons utiliser _kbhit fonction de() en c++. _kbhit est égale à 1 si une touche est enfoncée. Vous devez effacer l'_kbhit tampon d'autre, il restera 1. Méthode pour la compensation, c'est le caractère = getch(); Cela permettra d'enregistrer la dernière saisie de la clé dans le caractère que vous pouvez comparer et décider de l'action à effectuer sur la clé.
Tandis que la boucle peut être consommation PROCESSEUR, je n'ai pas de conseils occupé attente de la méthode, au lieu de cela, vous devriez penser à des cas d'accrochage.
Ici vous pouvez lire sur la winapi de frappe événement accrochage C++ Win32 événements de clavier
Si vous êtes toujours intéressé à l'utilisation de la boucle while, vous devez également libérer des ressources en dormant après avoir vérifié qu'une condition est fausse (par exemple, nanosleep )