MDI : Child gerne, aber bitte mit menü
-
Moin Moin !
Ich habe auf http://www.functionx.com/win32/howto/mdi.htm ein Tutorial über MDI's gefunden. Dieses funktioniert nach mehreren Anläufen auch relativ gut. Allerdings habe ich jetzt ein kleines Problem. Das Hauptdokument besitzt ein Menü. Das ist auch gut so :), allerdings würde ich jetzt für meine Childs auch Menüs verwenden. Je nachdem welches Child aktiv ist, soll auch das entsprechende Menü angezeigt werden und das Menü von dem Hauptfenster soll verschwinden (Natürlich nur im maximierten Zustand). Eine Änderung in der WNDCLASSEX-Struktur brachte leider auch keine Erfolge. Weiterhin habe ich schon gegoogelt, aber auch keine Ergebnisse gefunden. Kennt jemand noch ein Tutorial für MDI-Dokumente bzw könnte mir bei meinem kleinen Problem helfen ?
WNDCLASSEX WndClsEx; WndClsEx.cbSize = sizeof(WNDCLASSEX); WndClsEx.style = CS_HREDRAW | CS_VREDRAW; WndClsEx.lpfnWndProc = ChildWndProc; WndClsEx.cbClsExtra = 0; WndClsEx.cbWndExtra = 0; WndClsEx.hInstance = hInstance; WndClsEx.hIcon = LoadIcon(NULL, IDI_WARNING); WndClsEx.hCursor = LoadCursor(NULL, IDC_ARROW); WndClsEx.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); WndClsEx.lpszMenuName = MAKEINTRESOURCE(IDR_MENU); // <== bringt leider nichts :( WndClsEx.lpszClassName = ChildClassName; WndClsEx.hIconSm = LoadIcon(NULL, IDI_WARNING);Viele Grüße
SciFi
-
Ich hab' leider noch nichts mit MDIs gemacht, aber von der Vorgehensweise her müsstest Du die Nachricht abfangen, wenn ein Child maximiert wird und dann per SetMenu das neue Menu dem Hauptfenster zuweisen können. Und dann halt wieder das alte Menu setzen, wenn das Child nicht mehr maximiert ist.
Hab' leider keinen Code für Dich, aber so sollte das eigentlich funktionieren, denke ich.

-
Hallo !
Erstmal Danke für Deine Antwort. Das Problem ist aber, dass noch nicht einmal das Child-Fenster ein Menü hat, wenn es klein ist. Ich habe bisher leider auch noch keine Erfahrung mit MDI's, deswegen weiss ich nicht, wie ich hier weiterkommen soll. Das Child öffnet sich ganz normal. Icon, Titel alles so wie es sein soll, nur das Menü wird nicht angezeigt

-
Child-Fenster können keine Menüs haben.
-
Hatte das jetzt nicht so verstanden, dass die Childs ein eigenes Menu an ihrem Fenster haben sollen, das geht aber auch, soweit ich weiß nicht, wie "WS_CHILD" schon schrieb.
Was aber sicherlich geht ist, dass Du das Menu des Hauptfenster austauscht je nachdem welches Child gerade aktiv und/oder maximiert ist. Dazu müsstest Du dann wie gesagt die Nachrichten abfangen und das Menu (im Hauptfenster) entsprechend setzen. Ne andere Möglichkeit fällt mir jetzt auch nicht.

-
Stichwort: WM_MDISETMENU könnte vielleicht helfen.
-
Vielen Dank für die Antworten. Da hätte ich mir ja einen Wolf probieren können. Ich werde es mal austesten. Nachmals Danke

SciFi