Quote:
|
Wenn die taste gedrückt worden ist, wird ja 1 wiedergegeben.
|
Nö.
Siehe MSDN:
Quote:
|
If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState.
|
Da man keinen direkten Zugirff auf einzelne Bits hat, sondern immer nur auf eine bestimmte Anzahl gleichzeitig (vgl. Byte, Word, DWord, QWord), bedient man sich der Bit-Operatoren, um zu prüfen, welche Bits gesetzt sind und welche nicht.
Bit-Operatoren Siehe:
[Only registered and activated users can see links. Click Here To Register...]
Nun ist das ganze auch kein Geheimnis mehr. Will man prüfen, ob das niedrigste Bit gesetzt ist, also das Bit an der Stelle 0, nimmt man den AND-Operator:
Code:
Wenn niedrigstes Bit gesetzt:
11001001 00010001 //Rückgabewert von GetAsyncKeyState [sizeof(short) = 16bit]
00000000 00000001 // (2^0)= 1 in dualer Schreibweise
-------------------
00000000 00000001 //Ergebnis nach der AND-Operation (=1)
Wenn niedrigstes Bit nicht gesetzt:
11001001 00010000 //Rückgabewert von GetAsyncKeyState
00000000 00000001 // (2^0)=1 in dualer Schreibweise
-------------------
00000000 00000000 //Ergebnis nach der AND-Operation (=0)