Tastatur abfrage
-
Hallo ich habe eine frage wie kann man Im Borland c++ Builder abfragen welche Tasten gedrückt sind?
Unten habe ich den Quelltext angehängt der nach der Abfrage der Tastatur ablaufen soll...
Ich hoff ihr könnt mir helfen DANKE// Hier sollte die Tastaturabfrage hin... topBleierLinks=Spielfeld->BleierLinks->Top; topBleierRechts=Spielfeld->BleierRechts->Top; if (GetAsyncKeyState (VK_UP)&1==1) rechtsUp(topBleierRechts); if (GetAsyncKeyState(VK_DOWN)&1==1) rechtsDown(topBleierRechts); if (GetAsyncKeyState (VK_TAB)&1==1) linksUp(topBleierLinks); if (GetAsyncKeyState(VK_SPACE)&1==1) linksDown(topBleierLinks); } if ((GetAsyncKeyState (VK_UP)&1==1)&&(GetAsyncKeyState (VK_TAB)&1==1)) { rechtsUp(topBleierRechts); linksUp(topBleierLinks); } if ((GetAsyncKeyState(VK_DOWN)&1==1)&&(GetAsyncKeyState(VK_SPACE)&1==1)) { rechtsDown(topBleierRechts); linksDown(topBleierLinks); } if ((GetAsyncKeyState (VK_UP)&1==1) && (GetAsyncKeyState(VK_SPACE)&1==1)) { rechtsUp(topBleierRechts); linksDown(topBleierLinks); } if ((GetAsyncKeyState(VK_DOWN)&1==1)&& (GetAsyncKeyState (VK_TAB)&1==1)) { rechtsDown(topBleierRechts); linksUp(topBleierLinks); }Edit:
Bitte die Code-Tags verwenden. Danke!
-
Hallo
dazu kannst du im BCB am einfachsten die OnKeyDown,OnKeyUp bzw. OnKeyPress Events nehmen. Dort bekommst du den Virtual Key direkt, und must dann nicht mehr mit GetAsyncKeyState() diesen abfragen.
bis bald
akari
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Borland C++ Builder (VCL/CLX) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Vielleicht dazu noch KeyPReview der Form auf true setzen... dann sollte es mit OnKeyDown und OnKeyUp ohne Probleme zu schaffen sein

-
Ja das Mit dem KeyDown habe ich schon ausprobiert aber das problem ist dass man nur eine taste gleichzeitg betätigen kann...wir programmieren ein oing pong spiel und es solte ja möglich seine beide Schläger gleichzeitig zu bewegen...wie könnt ich das machen? Mit dem Keypreview funktioniert das auch nicht....
-
hi,
ich denke ihr wisst nicht wo ihr die Tasten abfragen sollt?
hier mal ein beispiel wie es funktionieren könnte.void __fastcall TPingPongForm::StarteSpielClick(TObject *Sender) { // Spielschleife // -> läuft solange bis jemand ESC drückt oder // einer gewinnt while (true) { short RetVal; // hier die Tasten abfragen und entsprechend reagieren if (RetVal = GetAsyncKeyState(VK_UP)) { // höchstwertiges Bit auswerten if (RetVal & 0x0001) Memo1->Lines->Add("VK_UP pressed"); else Memo1->Lines->Add("VK_UP released"); } // Spiel beenden // -> Menü anzeigen, etc. if (GetAsyncKeyState(VK_ESCAPE)) break; // ... anderes zeugs machen // jemand hat gewonnen // -> aufhören zu spielen if (Player1Wins || Player2Wins) break; } }
-
Der Spieler wird sich bedanken, dass er nichts von dem, was hier geschieht sieht, weil die ganze Schleife die ganze Zeit rechnet...
-
Sag mal, liest Du die Beitraege eigentlich richtig durch, bevor Du antwortest?

-
Danke für eure Antworten habs jetzt doch geschafft mit KeyDown und Keypreviwe...
DANKE