Vielleicht kennst du ja GetAsyncKeyState aus der WINAPI. Damit kann man eine Taste abfragen die gerade gedrückt ist.
Wenn du die Funktion jetzt allerdings in der Konsole benutzt wird sie wahrscheinlich nicht funktionieren, da du genau dann drücken müsstest wenn das Programm an dieser Stelle ist (In der Konsole programmiert man ja in der Regel linear und hat keinen Loop).
Setze deshalb ein _getch() davor, _getch() wartet bis irgend eine Taste gedrückt wurde. Wenn direkt danach GetAsyncKeyState folgt wird es auch ausgewertet:
|
C-/C++-Quelltext
|
1
2
3
4
|
_getch(); //aus conio.h
if (GetAsyncKeyState(VK_RETURN)) //aus windows.h
//Die Taste wurde gedrückt
|
Wenn du das jetzt mit switch machen möchtest kommst du wahrscheinlich um eine eigene Funktion nicht herum:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
enum KEY
{
KEY_RETURN,
KEY_ESCAPE
};
KEY Input(void)
{
_getch();
if (GetAsyncKeyState(VK_RETURN)) return KEY_RETURN;
if (GetAsyncKeyState(KEY_ESCAPE)) return KEY_ESCAPE;
}
|
So wird das dann verwendet:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
|
switch(Input())
{
case KEY_RETURN:
{
//Enter wurde gedrückt
} break;
default: break;
}
|
Man kann hie sicher noch das ein oder andere verbessern, funktionieren tut es aber auf jedenfall. Vielleicht weiß ja jemand noch eine schönere Lösung bei der man selbst nicht so viel schreiben muss...
Falls du mehr Tasten brauchst suche mal in der MSDN nach "Virtual Key Codes".