Ändern der Funktion des Schließenbuttons [x] in der Titelleiste
-
Hallo alle zusammen,
Problem:
Ich habe mit Visual C++ 6.0 ein Dialogfeldbasierendes Programm geschrieben.
Frage:
Hinweis:
Danke schonmal,
S.
-
Hast du schon versucht, dem "Abbrechen" Button eine andere ID als 'IDABORT' zuzuweisen?
-
OnCancel()
-
-
Hallo nochmal
Zunächst Danke für die prompte beantwortung meiner Fragen.
@CStoll: Ich hatte die Id von Anfang an schon auf IDCANCEL. Aber trotzdem Danke.
@Martin Richter:Danke. Das war das Problem. ich hatte zwar schon eine OnCloseMehtode aber ON_WM_CLOSE in der MessageMap hat noch gefehlt.
So Danke an alle. jetzt tut das programm genau das was es soll.
Dann hab ich nur noch eine Verständnisfrage:
Warum schließt sich das Programm nicht wenn ich in meiner OnClose() Methode CDialog::onClose() aufrufe aber bei einem Aufruf von CDialog::onCancel schließt es sich ? ist das nicht irgendwie unlogisch?S.
-
Alternativ kannst du dein Programm auch mit PostQuitMessage(0); beenden.
-
saßd0 schrieb:
Alternativ kannst du dein Programm auch mit PostQuitMessage(0); beenden.
Das ist absoluter Quark. Genau das sollte man nicht!
Man sollte grundsätzlich das Main Window zerstören. Wenn dann WM_DESTROYR ankommt, dann wird PostQuitMessage versendet.Durch diese Brutalo-Methode hat kein Fenster die Chance einen entsprechenden Clean-Up ausführen.
-
Bachtler schrieb:
Dann hab ich nur noch eine Verständnisfrage:
Warum schließt sich das Programm nicht wenn ich in meiner OnClose() Methode CDialog::onClose() aufrufe aber bei einem Aufruf von CDialog::onCancel schließt es sich ? ist das nicht irgendwie unlogisch?
S.Das kann ich mir nicht vorstellen. Die Default-Implementierung von OnClose ruft EndDialog auf!
Grundsätzlich wird ein modaler Dialog geschlossen durch den Aufruf von EndDialog... OnCancel ruft EndDialog(IDCANCEL) auf.
-
Na ja,
wie gesagt: ich hab mich ja auch gewundert, aber so ist das leider bei mir nun mal.Trotzdem nochmals Danke an Alle.