Que signifie le code 0x80 en se référant à des contrôles du clavier
Question
Que signifie le code 0x80 en se référant aux commandes du clavier dans l'environnement C ++ sous Windows?
Par exemple,
if(GetKeyState('K') & 0x80) {
//do something
}
Merci à tous!
Pas de solution correcte
Autres conseils
Mise à jour
Une vague de downvotes m'a propulsé dans l'enquête sur cet autre. Voilà comment les valeurs de retour (en hexadécimal) des œuvres de GetKeyState
. Je ne comprends pas tout à fait la propriété bascule d'une clé comme k
mais je suppose qu'il ya un état par défaut, il permet de basculer de.
0 Default State, key up
ff80 Default state, key down
1 Toggled, key up
ff81 Toggled, key down
0xff80
est ajouté chaque fois que les besoins de bits d'ordre élevé à fixer et le bit de poids faible est logique. Alors maintenant, nous savons pourquoi les travaux d'approche 0x80
--- depuis le bit d'ordre élevé de l'octet inférieur est défini ainsi!
Old réponse
retourne unSHORT
où, si le bit d'ordre élevé GetKeyState est 1
cela signifie que la clé est en place. opération ET avec 0x80
seulement vérifie si ce bit est 1
puisque dans 0x80
binaire est 10000000
.
Par conséquent, la déclaration GetKeyState('K') & 0x80
retournerait 0x80
si le bit de poids fort de la valeur retournée par GetKeyState('K')
est 1
et 0
si le bit de poids fort est 0
.
Le documentation MSDN de la fonction États:
Si le bit de poids fort est 1, la clé est vers le bas; sinon, c'est.
bit-wise et 0x80 vous donne le bit de commande, les contrôles de if
si le résultat est zéro ou non zéro et dans les contrôles d'essence, la valeur de ce bit.
Cette vérification semble cependant comme une erreur puisque revient GetKeyState()
un SHORT
et de vérifier le bit de commande d'un court vous devez peu sage et 0x8000.
Donc, je vous suggère de vérifier la valeur de retour avec un débogueur et vérifier comment cela fonctionne dans la réalité.
Je pense que vous voulez dire 0x8000, pas 0x80. Si cela ( http : //msdn.microsoft.com/en-us/library/ms646301 (VS.85) .aspx ) qui a ceci à dire sur la valeur de retour de GetKeyState: -
La valeur de retour indique l'état de la clé virtuelle spécifiée comme suit:
• Si le bit de poids fort est 1, la touche est enfoncée; sinon, c'est. • Si le bit de poids faible est 1, la clé est basculée. Une clé, comme la touche CAPS LOCK est activée si elle est activée. La clé est désactivée et untoggled si le bit de poids faible est 0. Une bascule de témoin lumineux de la touche (le cas échéant) sur le clavier sera lorsque la clé est basculée, et lorsque la clé est untoggled.
0x80 ne fait rien pour autant que je sais pas dire si
Selon la documentation
La valeur de retour indique l'état de la clé virtuelle spécifiée:
Si le bit de poids fort est 1, la touche est enfoncée; sinon, c'est.
Si le bit de poids faible est 1, la clé est activé ou désactivé. Une clé, comme la touche CAPS LOCK est activée si elle est activée. La clé est désactivée et untoggled si le bit de poids faible est 0. Une bascule de témoin lumineux de la touche (le cas échéant) sur le clavier sera lorsque la clé est basculée, et lorsque la clé est untoggled.
Peut-être avec une clé non toggleable (un 'K'), le faible ordre - les bits (terme ambigu? Peut-être qu'ils veulent dire 0x0080) et ordre élevé (0x8000) font de même chose?