if Key Pressed
-
Hey,
gibt es eine Möglichkeit wenn eine Taste gedrückt ist eine Funktion auszuführen?
Ich hatte folgendes geschrieben:while(true) { if(GetAsnycKeyState(VK_DOWN)) { ... } }
Dieser Ablauf funktioniert jedoch nur, solange VK_DOWN die letzte Taste ist, die ich gedrückt habe. Also wenn ich VK_DOWN gedrückt halte, und dann z.b. "2" drücke, so wird der inhalt (...) nicht mehr ausgeführt. Gibt es vieleicht eine andere Funktion mit der das ganze funktioniert?
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum C (C89 und C99) in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
ho,
probier mal _kbhit
http://msdn.microsoft.com/de-de/library/58w7c94c(v=vs.80).aspx
-
Fragt alle Tastatureingaben Global ab.
Wenn es nur in deinem Programm abgefragt werden soll dann wäre kbhit(); wohl besser.#include <windows> #include <iostream> using namespace std; int main(int argc, char* argv[]) { int scan; char str_key[256]; while(true) { Sleep(1); for (int key=0;key<255;key++) { if(GetAsyncKeyState(key) == -32767 ) { scan=MapVirtualKeyEx(key,0,GetKeyboardLayout(0)); GetKeyNameText(scan << 16, str_key ,MAX_PATH); cout<<"You have press: " << str_key <<" Scancode for this key: " << scan<< endl; if ( scan == 80 ) { cout<<"You have press VK_DOWN"<<endl; MessageBox(0,"Im a function you can find me in user32.dll =)","Hello",0); } } } } }
-
Hi,
eine weitere Möglichkeit wäre noch:#include <iostream> #include <windows.h> #include <conio.h> // für getch(); using namespace std; int main() { unsigned char auswahl; do { auswahl=getch(); if(auswahl == 72) { // Wenn Pfeiltaste Hoch } if(auswahl == 80) { // Wenn Pfeiltaste Runter } } while(auswahl != 83); // Solange bis [Entf] gedrückt wird return (0); // Programm beenden }
Ich hoffe ich konnte dir weiterhelfen.
Galileo
-
Statt getch() aus conio.h kann man auch schreiben:
#ifdef _WIN32
char Getch(){
HANDLE hdl=GetStdHandle(STD_INPUT_HANDLE);
HANDLE hdo=GetStdHandle(STD_OUTPUT_HANDLE);DWORD oldmode; //Zuvor verwendeter Konsolenmodus
CONSOLE_CURSOR_INFO cci;char gedrueckt;
GetConsoleMode(hdl, &oldmode);
GetConsoleCursorInfo(hdo, &cci); cci.bVisible=false; //Cursor nicht sichtbarSetConsoleMode(hdl, oldmode&~(ENABLE_LINE_INPUT|ENABLE_ECHO_INPUT)); //Input wird nicht angezeigt, Entertaste muss nicht gedrückt werden
SetConsoleCursorInfo(hdo, &cci);gedrueckt=getchar();
cci.bVisible=true; SetConsoleCursorInfo(hdo, &cci); //Setze Cursor wieder zurück
SetConsoleMode(hdl, oldmode); //Und den Modus wieder auf den zuvor verwendetenreturn gedrueckt;
}
#endif