Abfragen, ob Taste aktiv.
-
Mach einfach aus dem "char" ein "BYTE", dann passt es...
-
ich weiß... langsam geh ich richtig auf die Nerven...
aber es geht immer noch nicht ...Der regiert einfach nicht auf den Tastendruck.
Und wenn ich dann die Variable keystate[VK_ESCAPE] ausgeben lass, gibs nur ein Leerzeichen (oder soetwas).
-
Die einfachste Lösung ist:
#include <stdio.h> #include <windows.h> #include <tchar.h> int _tmain() { BYTE keystate [256]; do { USHORT us = (USHORT)GetKeyState(VK_ESCAPE); if ( (us & 0x8000) == 0x8000) break; Sleep(1); } while(TRUE); }
-
danke.
aber ich hätte noch 2 Fragen:
Was bedeutet (us & 0x8000) == 0x8000)?
0x8000 ist immer 0x8000 also warum muss man das extra nochmal prüfen und für was steht 0x8000?Und wie schaff ich es, dass er auf Buchstaben reagiert?
-
Ich mag halt explizite Überprüfungen... du kannst das " == 0x8000" aber auch weglassen...
Auf den Wert 0x8000 kommt man wenn man die Doku liest...Wie buchstaben... Du meinst wohl
USHORT us = (USHORT)GetKeyState('A');
-
Jochen Kalmbach schrieb:
Ich mag halt explizite Überprüfungen... du kannst das " == 0x8000" aber auch weglassen...
Hab übersehen, dass es das "Bitweise-Und" ist
Und kann man nicht weglassen..Jochen Kalmbach schrieb:
Wie buchstaben... Du meinst wohl
USHORT us = (USHORT)GetKeyState('A');
Geht leider nicht... und die Hexadezimal anzugeben funktioniert irgendwie auch nicht... sonst noch eine Idee?
Aber noch eine andere Frage:
Irgendwie scheint es, dass danch noch ein Zeichen im Keyboarpuffer ist, denn ein getch wird übergangen. Woran könnte das liegen? Wird das Zeichen nicht durch die Abfrage abgearbeitet?
-
Bei mir geht das wunderbar...
-
Irgendwelche Zeichen im Keyboard-Buffer werden natürlich nicht abgearbeitet (oder rausgeholt)... dazu verwendest Du bitte ReadFile oder ReadConsole(Input) (oder alles abgeleitete wie cin, scanf getch usw.)
-
Jochen Kalmbach schrieb:
Bei mir geht das wunderbar...
OK dachte, dass er zwischen Groß-/Kleinbuchstaben unterscheidet...
Aber so is es eh besser.Dann nochmal danke
-
Schau doch einfach mal in die "winuser.h" und such mal nach "VK_A", dann wirst Du sehen warum ich 'A' verwendet habe...