MDI-SubMenu per WM_CREATE aufrufen und per WM_CLOSE "zerstören"
-
bisher habe ich ein MDI-SubMenu immer bei WM_CREATE aufgerufen und bei WM_CLOSE "zerstört". Gibt es da effektivere Varianten?
-
Was verstehst du unter aufrufen? Das Menü laden und / oder setzen?
Ich mache es normalerweise so (C++), dass ich je eine Klasse für verschiedene MDI-Child-Typen habe. Ein statischer Member dieser Klassen ist jeweils die Menuresource.Beim Registrieren der Fensterklasse wird auch dieses Menu geladen und beim Zerstören des Hauptfensters wird an alle Child-Klassen eine statische Cleanup-Methode aufgerufen, die, wenn es erforderlich ist, den Speicher ihres jeweiligen Menus wieder freigibt.
Das Menu im Hauptfenster setzen kann man nach Erhalten der Nachricht WM_MDIACTIVATE.
Aber ob das jetzt der Königsweg ist, weiß ich auch nicht - ich bin aber damit zufrieden.
Denkbar wäre eine gemeinsame Basisklasse für die Childs, die vieles automatisch erledigen könnte. Da ich aber selten mehr als vier oder fünf verschiedene Child-Typen in einem Programm habe, ist der Aufwand überschaubar.