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 un SHORT 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?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top