Frage zu CWnd:DestroyWindow
-
Aber dieser Trace kommt aus dem Destruktor won CWnd! Das kanst Du in der Source der MFC genau sehen! Dieser Text kommt nur einmal an dieser Stelle vor.
-
ok, aber mein CWnd ist eine Membervariable in einem Dialog. Es wird also nix dynamisch mit new angelegt. An welcher Stelle soll dann die doppelte Freigabe erfolgen, wenn ich im Destruktor des Dialogs das DestroyWindow aufruf?#
Ma so nebenbei: wie machen dann andere sowas? Werden doch sicher ein paar Leutz hier mal mehrere Fensterklassen benutzen, die auch an geeigneter Stelle freigegeben werden müssen ?!?!
-
Ich mache es genauso. Ich habe auch einfach eine Membervariable in der Klasse.
Frage: Wie zerstört sich Dein Dialog? Zersörst Du den evtl. mit delete. Ist der nicht modal und geht aus dem Scope?
-
Ist eine einfache Dialogfeldanwendung, mit dem Projekt-Assistenten erstellt und diese öffnet halt 2 neue Fenster zur Anzeige von Grafiken.
-
Pellaeon schrieb:
Ist eine einfache Dialogfeldanwendung, mit dem Projekt-Assistenten erstellt und diese öffnet halt 2 neue Fenster zur Anzeige von Grafiken.
Du schreibst öffnen! Wenn dise Fenster keine Child Windows sind, werden diese beim Schließen des Dialoges nicht zerstört.
-
jo darum gehts! An welcher Stelle ich die am einfachsten freigeb.
-
Wenn es eigene Overlapped Windows sind, solltest Du einen WM_DESTROY Handler bauen und dort DestroyWindow aufrufen.
Aber warum sind diese Fenster Overlapped? Warum sind es keine Child Windows? Naja ist Dein Design.
-
Und wie kann ich Child-Windows machen, ohne das diese auf den Bereich des Elternfensters beschränkt sind?
-
Ok! Wenn dies eine Anforderung ist, dann gehen Childwindows nicht.
-
Also bleibt wohl nur der Weg, sich da ne Kontrollstruktur drumzubauen .... hm schade