GetMessage-Loop stoppen
-
Hallo,
Folgende Schleife läuft ja immer weiter:
while (GetMessage(&message,NULL,0,0)) { TranslateMessage( &message ); DispatchMessage( &message ); }
Wie kann man diese anhalten?
Mit freundlichen Grüssen,
banHammer
-
...
-
Swordfish schrieb:
PostQuitMessage( exit_code )
als Reaktion aufWM_DESTROY
?Danke erstmal für die Antwort.
WM_DESTROY
wird doch ausgelöst, wenn beim Fenster auf das "x" geklickt
wurde. Leider habe ich kein Fenster. Gibt es noch eine andere Möglichkeit?Freundliche Grüsse,
banHammer
-
Auch wenn du kein Fenster hast wirst du wohl wissen, wann du aus der Message-Pump raus willst?
-
Ich weiss ja nicht was du genau machen willst, gibt viele Möglichkeiten zu erreichen dass ein Message-Loop beendet wird.
PostQuitMessage
z.B. funktioniert soweit ich weiss auch ohne Fenster.
Bzw. du kannst ja imwhile
auch eine andere Bedingung angeben als nurGetMessage
, z.B.while (GetMessage(&message,NULL,0,0) && irgendEineVariable)
.Wann du das machen willst musst du natürlich selbst wissen.
-
In die Standard-Message-Loop sollte man besser nicht eingreifen. Wenn du genau sagst, was das Ziel ist, gibt es zahlreiche andere Möglichkeiten.
-
Mit EnableWindow(HWND, bool); könntest du ggf. die Buttons/Edits usw deaktivieren, so, dass in einem bestimmten Zeitraum keine Eingaben vorgenommen werden können.
-
banHammer schrieb:
Hallo,
Folgende Schleife läuft ja immer weiter:
while (GetMessage(&message,NULL,0,0)) { TranslateMessage( &message ); DispatchMessage( &message ); }
Wie kann man diese anhalten?
banHammer schrieb:
Swordfish schrieb:
PostQuitMessage( exit_code )
als Reaktion aufWM_DESTROY
?Danke erstmal für die Antwort.
WM_DESTROY
wird doch ausgelöst, wenn beim Fenster auf das "x" geklickt
wurde. Leider habe ich kein Fenster. Gibt es noch eine andere Möglichkeit?Die Frage war anhalten, nicht beenden !?
GetMessage ist ein blockierender Systemaufruf. Es reicht also einfach
keine Nachrichten zu senden.Wenn es kein Fenster gibt um so besser; woher bekommt der Thread hier üblicherweise Messages ?