Timer lässt sich nicht Killen
-
Hallo, habe versucht einen Timer in mein Programm zu Implemetieren.
Starten mit:
int TimerSec = 1; SetTimer(hChild, TimerSec, 10, NULL);
funktioniert einwandfrei.
Aber beenden mit:case WM_TIMER: { MessageBox(NULL, "test", "Timer",MB_ICONQUESTION | MB_YESNO | MB_SYSTEMMODAL | MB_DEFBUTTON2); KillTimer(hChild, TimerSec) return 0; }
will so gar nicht. (MessageBox ist nur zum testen)
Eigentlich sollte sich eine MSG öffnen und der Timer sollte damit verschwinden. Ich bekomme aber leider MSG´s bis zum absturz meines Programmes. Neu gestartet wird der Timer nicht.
Hat jemand da Erfahrungen?
-
Lordlormi schrieb:
Ich bekomme aber leider MSG´s bis zum absturz meines Programmes.
Na logisch! Die MessageBox-Funktion implementiert intern eine MessageLoop, Nachrichten werden also verteilt. Und schon bekommst Du fröhlich alle 10ms! weiter Deine Timer-Messages. Kille den Timer, bevor Du die MessageBox anzeigst. Und da ich weiterhin annehme, daß Du eine Sekunde warten willst (wegen TimerSec), mußt Du noch das Timeout auf 1000 setzen:
int TimerSec = 1; SetTimer(hChild, TimerSec, 1000, NULL);
case WM_TIMER: { KillTimer(hChild, TimerSec) MessageBox(NULL, "test", "Timer",MB_ICONQUESTION | MB_YESNO | MB_SYSTEMMODAL | MB_DEFBUTTON2); return 0; }
-
TimerSec sollte konstant sein, sonst kann die Variable aus Versehen verändert werden.
-
Und wer hät's gedacht, funktioniert sogar wenn man es richtig macht
Vielen Dank für die Schnelle Antwort.
LordLormi