KillTimer bei CDialog Objekten erforderlich?
-
Donnerstag, 19. Juli 2012 13:27
Hallo Forum
Beim Versuch, einem neuen Kollegen die Funktionsweise von Window-Timern zu erklären bin ich auf eine uralte Frage gestoßen:
BOOL CxxDlg::OnInitDialog { .... SetTimer(TIMER_ID,500,NULL); ... } void CxxDlg::OnTimer(UINT nIDEvent) { ... CDialog::OnTimer(nIDEvent); }Man weiß, dass diese Timer angeblich nicht allzu üppig gesät sind, und es die Funktion KillTimer() gibt. Die Frage, die sich nun stellt:
Gibt es in der CDialog Basisklasse einen Mechanismus, der automatisch alle zugewiesenen Timer wieder freigibt ("tötet") sobald der Dialog beendet wird, oder muss ich das selber machen?
Ich hab's meistens in die OnDestroy Funktion reingeschrieben, wenn's eine gegeben hat:
void CxxDlg::OnDestroy(void) { KillTimer(TIMER_ID); ... }Muss ich das auf jeden Fall machen?
Grüße
FireHeart
- Typ geändert Robert BreitenhoferMicrosoft Contingent Staff, Moderator Montag, 20. August 2012 14:30 Keine Rückmeldung des Fragenstellender
- Typ geändert Robert BreitenhoferMicrosoft Contingent Staff, Moderator Mittwoch, 9. Januar 2013 17:31 Rückmeldung des Fragenstellender
Alle Antworten
-
Dienstag, 24. Juli 2012 13:59
So ist es. KillTimer ist nicht (mehr) nötig.
http://msdn.microsoft.com/en-us/library/kt7c0708(v=vs.100).aspx
MSDN sagt zu DestroyWindow:
.. It also destroys the window's menu, flushes the application queue, destroys outstanding timers, removes Clipboard ownership, and breaks the Clipboard-viewer chain ..
In älteren BS und WinCE war es noch nötig, soweit ich mich erinnere.
- Als Antwort vorgeschlagen Martin RichterMVP, Moderator Montag, 14. Januar 2013 09:35
- Als Antwort markiert Robert BreitenhoferMicrosoft Contingent Staff, Moderator Montag, 14. Januar 2013 12:11
-
Dienstag, 24. Juli 2012 16:43
Die Einschränkung mit den Timern existiert mit 32 Bit Windows auf NT basierend in der Art nicht mehr. Wie das mit Win9x was weis ich nicht, das habe ich nie genauer beleuchtet.
Aber auch heute entferne ich Timer die ich nicht mehr benötigt mit KillTimer, auch wenn es nicht mehr unbedingt nötig ist. Es ist aber so, dass es nichts schadet, und je nach Anwendungsfall werden Timer ja auch noch während der existens eines Fensters nicht mehr benötigt, und daher ist KillTimer noch immer von mir gerne benutzt...
-
Montag, 20. August 2012 14:30Besitzer****************************************************************************************************************
Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.
Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.
****************************************************************************************************************Robert Breitenhofer, MICROSOFT

Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können. -
Mittwoch, 9. Januar 2013 15:47
Hallo Robert
Sorry, dass ich mich jetzt eine Zeitlang nicht im Forum betätigt habe, aber aus irgendeinem Grund konnte ich mich nicht mehr einloggen. Jedesmal, wenn ich versuchte, dies zu tun, passierte beim Explorer einfach gar nix mehr...auch auf anderen Computern.
Heute hab ich's mal wieder probiert...und siehe da, es ging wieder :-)
Grüße
FireHeart
-
Mittwoch, 9. Januar 2013 17:32Besitzer
Hallo Robert
Sorry, dass ich mich jetzt eine Zeitlang nicht im Forum betätigt habe, aber aus irgendeinem Grund konnte ich mich nicht mehr einloggen. Jedesmal, wenn ich versuchte, dies zu tun, passierte beim Explorer einfach gar nix mehr...auch auf anderen Computern.
Heute hab ich's mal wieder probiert...und siehe da, es ging wieder :-)
Grüße
FireHeart
Hallo Fire-Heart,
Kein Problem, ich habe die Frage wieder aufgemacht.
Könntest Du Dein Problem inzwischen lösen? Wenn ja, es wäre schön, wenn Du posten würdest wie es funktioniert hat, denn dann profitieren unter Umständen andere mit dem gleichen Problem davon.
Grüße,
Robert
Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Montag, 14. Januar 2013 12:11Besitzer
Hallo Fire-Heart,
Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
RobertRobert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

