4Danke
ERLEDIGT
JA
JA
ANTWORTEN
14
14
ZUGRIFFE
408
408
EMPFEHLEN
-
10.12.11 18:55 #1
- Registriert seit
- Nov 2011
- Beiträge
- 148
Hallo,
Ich weiß nicht ob es schon so ein Thema gibt hab bei google und hier nichts gefunden nur zu WinApi. Ich frage mich ob es möglich in einer Konsolen Anwendung sobald zb ESC gedrückt wird das Programm beendet wir. Also ich möchte das sobald irgendwo im Spiel ESC gedrückt wird wird das Spiel beendet. Bei cin muss man noch enter Drücken und das geht eh nicht mit Esc und getch muss man ja eine Taste drücken und ich will halt das man keine Tastedrücken muss aber sobald man es tut wird geschaut ob es Esc ist.
Ps: tut mir leid wenn das Doppelpost ist da ich denke das es irgendwo ein Thema scho gibt aber ich das nicht gefunden hab.
mfG
-
10.12.11 21:22 #2
Dazu währe eine Spielschleife ganz gut. Die könnte bei jedem durchgang prüfen ob Escape gedrückt wurde, und dann einfach return 0; . Aber sonst kenne ich keinen anderen Weg.
Müsstest halt eine Schleife in einem anderen Thread machen, die immer auf Tasten prüft. Oder wenn du ein Fenster hättest, einfach in dem WM_KEYDOWN Handle dei Taste filtern und wenn ESC->exit.
MfGFehlermeldung bitte!
Google - Dein Freund und Helfer
-
10.12.11 22:02 #3
- Registriert seit
- Nov 2011
- Beiträge
- 148
Ja wie gesagt Konsole und Spielschleife hab ich gibt es denn so was das einfach nur schaut ob Esc down ist oder muss man cin oder so benutzen?
-
Hallo. Solche Sachen sind in der Regel abhängig vom Betriebssystem. Eine Variante für Windows wäre:
GetKeyStateViele Tutorials und Artikel zur Programmierung unter Windows mit C++ und C#. Tägliche Updates und Antworten auf eure Fragen:
Win32Easy - Blog
Es würde mich freuen, wenn ihr einen Kommentar postet!
-
10.12.11 22:07 #5
- Registriert seit
- Nov 2011
- Beiträge
- 148
Ist das nicht Winapi?
-
Doch, daher ja auch die charmante Beilage "Eine Variante für Windows"
Viele Tutorials und Artikel zur Programmierung unter Windows mit C++ und C#. Tägliche Updates und Antworten auf eure Fragen:
Win32Easy - Blog
Es würde mich freuen, wenn ihr einen Kommentar postet!
-
10.12.11 22:17 #7
Ich würde aber GetAsyncKeyState Emfehlen

Ja das ist WinAPI. Wieso schreibst du Plattformunabhängik? Du kannst WinAPI trotzdem benutzen auch ohne Fenster
EDIT: Ups zu langsam
Fehlermeldung bitte!
Google - Dein Freund und Helfer
-
10.12.11 22:32 #8
- Registriert seit
- Nov 2011
- Beiträge
- 148
Muss ich dann auch statt main() winmain benutzen?
-
Das Problem mit GetAsyncKeyState und GetKeyState ist, dass es dir auch zurückgibt, dass der Knopf gedrückt ist, wenn dein Fenster nicht den Inputfokus hat (zum Beispiel minimiert in der Taskleiste).
@CodeCrafterCpp: Nein, die WinMain-Funktion als Einstiegspunkt ist sozusagen der Indikator für Visual Studio keine Konsole zu verwenden.Viele Tutorials und Artikel zur Programmierung unter Windows mit C++ und C#. Tägliche Updates und Antworten auf eure Fragen:
Win32Easy - Blog
Es würde mich freuen, wenn ihr einen Kommentar postet!
-
10.12.11 22:39 #10
- Registriert seit
- Nov 2011
- Beiträge
- 148
Kann ich denn irgendwie schauen ob meine Konsole im Inputfokus ist?
-
10.12.11 22:43 #11
Wenn ich mich nicht irre mit GetWindow oder GetHWND sry ich weiß es nicht mehr, aber du kannst setzten ob es den Inputfokus haben soll

MfGFehlermeldung bitte!
Google - Dein Freund und Helfer
-
Ja klar, eine Möglichkeit wäre folgendes:
Code cpp:1 2 3 4 5 6 7 8 9 10 11
SHORT state = GetAsyncKeyState(VK_ESCAPE); while(true) { if(GetForegroundWindow() == GetConsoleWindow()) { if((state & 0x8000) != 0) break; } state = GetAsyncKeyState(VK_ESCAPE); Sleep(0); } return 0;
Viele Tutorials und Artikel zur Programmierung unter Windows mit C++ und C#. Tägliche Updates und Antworten auf eure Fragen:
Win32Easy - Blog
Es würde mich freuen, wenn ihr einen Kommentar postet!
-
10.12.11 22:49 #13
- Registriert seit
- Nov 2011
- Beiträge
- 148
Ok ich bin nicht so der OverPro und was macht 0x8000 also was ist das und wie bist du drauf gekommen.
EDIT: Mein FehlerGeändert von CodeCrafterCpp (10.12.11 um 22:55 Uhr)
-
In der Beschreibung von GetAsyncKeyState findest du den Satz:
In einem SHORT ist das höchste Bit auf meiner Plattform das 16te Bit, also 2^15 = 32768, das ist Hexadezimal 0x8000. 0x8000 ist binär als 1000 0000 0000 0000. Rechnet man das Ergebnis mit dieser Zahl binär UND (1 UND 0 = 0, 1 UND 1 = 1, 0 UND 1 = 0, 0 UND 0 = 0) so erhält man also genau entweder 0, wenn das höchste Bit 0 ist und 1000 0000 0000 0000, wenn das höchste Bit 1 ist.
Zitat von http://msdn.microsoft.com/en-us/library/windows/desktop/ms646293(v=vs.85).aspx
Eine allgemein Variante die unabhängig von der Grösse des Shorts funktioniert wäre folgende:
Code cpp:1
((~(SHORT)0) ^ (SHRT_MAX >> 1))
Viele Tutorials und Artikel zur Programmierung unter Windows mit C++ und C#. Tägliche Updates und Antworten auf eure Fragen:
Win32Easy - Blog
Es würde mich freuen, wenn ihr einen Kommentar postet!
-
10.12.11 23:26 #15
- Registriert seit
- Nov 2011
- Beiträge
- 148
Ok danke bin in Binär rechnen nicht so gut denke aber ich konnte dir Folgen.
Ähnliche Themen
-
[C#] Konsolen-Ausführung happert
Von Hawkings im Forum .NET Windows FormsAntworten: 0Letzter Beitrag: 09.04.08, 12:36 -
Konsolen Oberfläche
Von bi0h4zard im Forum C/C++Antworten: 12Letzter Beitrag: 01.03.08, 19:37 -
Konsolen Ein- und Ausgabe
Von RMI_17 im Forum Visual Basic 6.0Antworten: 0Letzter Beitrag: 15.09.05, 10:52 -
Menü in DOS-Konsolen
Von ProgFreak im Forum C/C++Antworten: 1Letzter Beitrag: 20.04.04, 14:04





Zitieren
Login






