C++ do while Schleife mit Enter beginnen und mit Esc verlassen?

... komplette Frage anzeigen

2 Antworten

Entweder du machst es so wie es schon @PeterKremsner vorgeschlagen hat, oder du nimmst gleich ein Befehl der Windows API, nämlich GetAsyncKeyState.

https://msdn.microsoft.com/de-de/library/windows/desktop/ms646293(v=vs.85).aspx

Beispiel:

if(GetAsyncKeyState(VK_ESCAPE)) {
//Irgendwas
}
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von HelpMeD3
31.07.2016, 20:33

den befehl hatte ich auch schon versucht aber bin zu blöde den sinnvoll zu nutzen oder er geht nicht so. Habe folgendes gemacht leider ohne Funktion Programm schließt sich nicht beim drücken von Esc



if(GetAsyncKeyState(VK_ESCAPE)) 
{return 0;} 
//oder { exit(-1);}



0
Kommentar von PeterKremsner
31.07.2016, 22:32

Die Antwort stellt mit Sicherheit die elegantere Variante dar ;)

Wenns mit der Windows API nicht klappt kannst du es auch mit Threads versuchen.

Bei einem Tastendruck den Workerthread starten und mit dem Escape Tastendruck, ein Flag setzen.

Mit dem Flag beendest du dann die Berechnung im Thread und in der Hauptanwendung und machst dann ein Thread.join.

Das wäre nur die alternative wenn du es auch so versuchen willst und wenn du gerade Programmieren lernst, sind so Threads insbesondere Workerthreads eine der wichtigsten Sachen, besonders wenns zu einem Programm mit GUI kommt.

1

Das abbrechen einer Berechnung mit ESC ist ziemlich kompliziert, das hängt vom Betriebsystem ab, dazu musst du den Tastendruck abfangen, also in Windows zB über die Win32 API.

Leichter ist es wenn du bei jedem Schleifendurchgang nach "Continue y/n" fragst.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von HelpMeD3
31.07.2016, 17:40

Also die Berechnungen soll er ja noch zu ende machen (also keine dauernde überwachung ob esc gedrückt wurde oder nicht). Er soll ja lediglich am Ende der Schleife was normal ja mit z.b 

int Weiter;

// bla bla bla

cin >> Weiter;

} while(Weiter != 0);

So das ich mit 0 Raus komme und mit z.b 1 oder 2 usw die Schleife wieder hole. Nur soll stat der 0 Esc gedrückt werden koennen und stat 1 einfach nur Enter

0

Was möchtest Du wissen?