Ä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()


  • Mod



  • 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.


  • Mod

    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.


  • Mod

    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.


Log in to reply