Hallo, wie kann ich einen Timer implementieren. Bei einer Dialoganwendung sind 3 Schritte notwendig: 1. afx_msg void OnTimer(UINT nTimerID); //in der header 2. void Test_Class::OnTimer(UINT nTimerID)//in der cpp { ; } 3. ON_WM_TIMER () //in der MessageMap
Mein Problem: Ich habe gerade keine Dialoganwendung und kann deshalb in die MessageMap auch keine Basisklasse(CDialog) eintragen:
Windows-Timer funktionieren nur mit Dialogen, (falls mich einer vom gegenteil überzeugen kann, kann er das ruhig tun) -- class God : public ChuckNorris { };
Das versuch ich doch glatt mal. Man kann Timer auch mit anderen Fenstern einsetzen. Allerdings nur mit Fenstern, sonst kann die WM_TIMER Message ja nirgendwohin gesendet werden (das OS heißt nicht ohne Grund so). Also -> Klasse von CWnd ableiten.
FloSoft postete Windows-Timer funktionieren nur mit Dialogen, (falls mich einer vom gegenteil überzeugen kann, kann er das ruhig tun)
Aber gerne doch. Lies nach, was in der MSDN-Hilfe unter "SetTimer" steht, und zwar der Eintrag im Platform SDK. Da steht, dass das Window-Handle auch NULL sein kann.
Ja aber dann muss man eine Timer-Funktion angeben... Ich meinte mit meiner Aussage das keine WM_TIMER-Nachricht geschickt werden kann falls kein Dialog/Fenster vorliegt ... -- class God : public ChuckNorris { };
When you specify a TimerProc callback function, the default window procedure calls the callback function when it processes WM_TIMER. Therefore, you need to dispatch messages in the calling thread, even when you use TimerProc instead of processing WM_TIMER.
... komm damit leider nicht ganz klar! Kann mir da mal bitte jemand ein kleines Beispiel (oder Link) geben wie ich einen Timer (ohne Dialog) implementieren kann.