SetTimer() Frage
-
Hallo zusammen,
Also ich hab ein Dialogfeld, darauf sind bestimmte Steuerelemente.
Jetzt will ich das der Benutzer den "Play"-Button aktiviert und dann alle 2 Sekunden eine Funktion aus der Dialogfeldklasse aufruft, die dann wiederum bestimmte Aktionen auf dem Dialogfeld hervorruft. Das ganze soll solange laufen bis die "Stop"-Button gedrückt wird.Dialog, Steuerelemente und Funktionen ist alles klar. Blos wie löse ich diese Timergeschichte, kann ich das mit SetTimer in der ONClick des Play-Buttons auslösen? Und wenn ja wie geht das? Oder gibt es eine bessere Möglichkteit?
THX für die Hilfe!

-
Ja, kannst du - OnPlay() ruft SetTimer(id,2000,NULL) auf, um den Timer zu starten ("id" kannst du frei wählen, 2000 ist die Laufzeit, als letzten Parameter könntest du einen Callback angeben), OnStop() ruft KillTimer(id) (der Wert sollte zum SetTimer-Aufruf passen). Außerdem mußt du noch die Nachrichtenbehandlung für die WM_TIMER Nachricht einbauen - und darin "eine Funktion aus der Dialogklasse" aufrufen.
-
Also grob sowas:
void CMeinDlg::OnPlay() { SetTimer(ID_T1,2000,NULL); } void CMeinDlg::OnStop() { KillTimer(ID_T1); } void CMeinDlg::OnTimer(UINT nIDEvent) { CDialog::OnTimer(nIDEvent); }Wie rufe ich in OnTimer jetzt die andere Funktion auf?
-
Genauso wie du jede andere Funktion aufrufen würdest:
void CMeinDlg::OnTimer(UINT nIDEvent) { if(nIDEvent == ID_T1) { ... //mach was } else CDialog::OnTimer(nIDEvent); }
-
Ach alles klar! Ich war jetzt bisschen verwirrt.
Dankeschön
