Hauptmenü in neuem Fenster nicht aktiv
-
Ich öffne aus meinen Hauptfenster heraus ein neues Fenster. Dafür habe ich eine Menü-Resource angelegt. Nach dem Öffnen sind aber alle Menüelemente ausgegraut, obwohl, soweit ich das sehe, die Vorgehensweise identisch mit dem Menü des Hauptfesnters ist (Hab das Programm selbst nicht geschrieben, erweitere es nur und bin kein MFC Experte).
Der code zum Anlegen und Anzeigen des neuen Fensters sieht wie folgt aus:void CMainFrame::OnFensterNeuesdatenfenster() { datenfenster = new CMDIFrameWnd; datenfenster->LoadFrame(IDR_MENU_DATENFENSTER); datenfenster->ShowWindow(SW_SHOW); //datenfenster->GetSystemMenu(FALSE)->EnableMenuItem(ID_NEUES_GAUGE,MF_ENABLED); }
Fehlt da noch irgend eine Zeile zum aktivieren des Menüs?
Ich habe auch schon versucht, ein "UPDATE_COMMAND_UI"-Ereignishandler zu verwenden, wie es im Hauptfenster getan wird um je nach Programmzustand einzelnen Menüelemente zu aktiveren/deaktivieren:
void CMainFrame::OnUpdateNeuesGauge(CCmdUI *pCmdUI) { pCmdUI->Enable(); }
Hat aber auch keine Effekt. Ein Breakpoint in der Funktion zeigt mir, dass diese niemals durchlaufen wird (Ist mit dem VS-Assitent angelegt, funktioniert im Hauptfenster problemlos)
Generell wäre das aber auch nur ne Krücke... Es muss doch möglich sein, so ein neues Fenster anzulegen in dem das Menü direkt aktiviert ist.
Im Resourceneditor ist übrigens alles auf "aktiviert" gestellt, da liegts nicht dran. Hab auch schon Testweise versucht, das gleiche Menü zu verwenden, wie im Hauptfenster... ebenfalls alles grau.
-
Hast Du einen EIntrag in der Messagemap?
-
Ja:
ON_UPDATE_COMMAND_UI(ID_NEUES_GAUGE, &CMainFrame::OnUpdateNeuesGauge)
Aber wie schon erwähnt, muss nicht das Menü generell aktiviert sein, wenn ich es einem Fenster hinzufüge?
-
Nein, wenn es ein CFrameWnd ist nicht.
Wenn ein Menü vorhanden ist, wird WM_INITMENUPOPUP an das Framewnd gesendet, wnen dieses aufklappt. Diese Nachricht wiederum löst die ON_UPDATE_ Handler aus...Das wie gesagt aber nur wnen von CFrameWnd abgeleitet wird...