Frage zur Fensterfreigabe, wenn Parent gesetzt ist
-
Folgendes:
// INT_PTR CAdjustSheet::DoModal() { if (!initUsbDevice()) return IDCANCEL; m_graph.Create(IDD_DIALOG_GRAPH,this); m_graph.ShowWindow(TRUE); return CPropertySheet::DoModal(); }Ich habe einen zweiten nichtmodalen Dialog der neben dem ersten angezeigt wird.
Wenn der Hauptdialog geschlossen wird, soll auch der zweite sich schließen.
wenn ich als Parent den Hauptdialog angebe, passiert dies automatisch.
Nun wollte ich gern wissen, ob da auch das Fenster wirklich zerstört wird?
Weil wenn ich die DestroyWindow überschreibe und nen Breakppoint reinsetze, wird dieser nicht erreicht, also wird DesstroyWindow anscheinend nicht aufgerufen.Ich hab das jetzt erstmal so angepasst, dass ich von außen per Hand das Destroy noch aufrufe. Ist dies wirklich nötig?
-
DestroyWindow wird auch hier nicht angesprungen.
Wenn bekommt das Fenster die Nachricht WM_CLOSE und WM_DESTROY.Du müsstest alle entsprechende Handler einbauen.
-
Wie wird denn dann das Fenster geschlossen, wenn kein WM_CLOSE und kein WM_DESTROY benutzt wird?
Wie gesagt, geschlossen wird es ja automatisch, wenn sich das Elternfenster schließt ohne mein zutun, aber die beiden Handler für close und destroy werden halt nicht benutzt, wie du schon sagst.Hab ich da dann nen MemLeak, wenn ich die nicht "per Hand" aufrufe?
Ich dachte ein Fenster wird immer per "destroy" zerstört?
-
Ein anderes Fenster mag DetsroyWindow aufrufen. Aber das heißt eben nicht, dass Deine "virtuelle" DestroyWindow Funktion aufgerufen wird.
Dennoch bin ich sicher, dass zumindest die Nachrichte WM_DESTROY versendet wird!
Das ist der Punkt wo Du auch Deinen Speicher aufräumen mußt. Oder eben PostNcDestroy!