Zitat von
nahpets:
hab's bei mir ausprobiert, so funktioniert es, es ist ja kein 33 and 15 sondern ein Ergebnis der Funktion and 15, was immer die Funktion warum auch ausgeben mag.
Das ist nett - einfach programmieren, klappt derzeit. Schick. Und was die Funktion zurück gibt ist auch unbedeutend? Klasse, deine Programme sorgen bestimmt für Heiterkeit bei den Abnahmen...
Zur Klärung einfach mal die
Dokumentation anschauen und nicht einfach nur kopieren...
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. However, you should not rely on this last behavior; for more information, see the Remarks.
Mit anderen Worten: Teste Bit 15 wenn du den aktuellen Tastenstatus haben willst, teste Bit 0, wenn du wissen willst, ob die Taste seit dem letzten Aufruf gedrückt wurde.
Aktueller Status:
if GetAsyncKeyState(VK_UP) and 128 = 128 then
Status seit letztem Aufruf:
if GetAsyncKeyState(VK_UP) and 1 = 1 then
Dein Code funktioniert bisher, weil du alle Bits des unteren Nibbles ausmaskiert hast und da ist Bit 0 mit drin. Da
MSDN aber nur Bit 0 definiert, verlässt du dich auf das undokumentierte Verhalten, dass alle anderen Bits 0 sind.
Ansonsten kann natürlich bei einem AND 15 auch 1 rauskommen, ich war bei der Umrechnung mit der 16 verrutscht. Dezimale Angaben sind meist etwas schwerer handlebar bei Bitmasken, da gelobe ich mir lieber hexadezimale Angaben, da sieht man sowas eher.