S
Muss mich hier wieder melden (war ja auch nicht anders zu erwarten ;))
Hab zwar die Sprachumschaltung mal hinten angestellt aber bin gerade wieder auf ein Problem gekommen, welches ich dann doch relativ schnell lösen sollte:
Ich hab mich ja jetzt dazu entschieden immer das selbe Menü anzuzeigen (also kein abgespecktes Menü, wenn kein Dokument geöffnet ist).
Das Problem dabei hab ich ja vorher schon beschrieben und ich es umgangen habe:
suamikim schrieb:
LowFly schrieb:
m_pDocTemplate = new CMultiDocTemplate(
[b]IDR_MENUDASGELADENWIRD[/b],//<----das ist das Menu was immer geladen wird
RUNTIME_CLASS(xxxDoc),
RUNTIME_CLASS(CChildFrame),
RUNTIME_CLASS(xxxView));
Hab das jetzt mal versucht, aber irgendwie ändert das nichts:
Der Aufruf sieht jetzt folgendermaßen aus:
m_pDocTemplate = new CMultiDocTemplate(IDR_xxxTYPE,
RUNTIME_CLASS(CxxxDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CxxxView));
if (!m_pDocTemplate)
return FALSE;
AddDocTemplate(m_pDocTemplate);
Angezeigt wird beim Programmstart trotzdem nicht das Menü IDR_xxxType, sonder IDR_MAINFRAME, also wird das Menü wohl wo anders geladen. Die Frage ist nur, wo? (Das Problem hab ich jetzt umgangen, indem ich in der InitInstance ganz am Schluss einfach mein AppChangeLanguage aufrufe, welches unter anderem auch die unten geschilderte Methode SetMenu vom MeinFrame ausführt. So wird anhand eines Registry-Eintrages zumindest beim Start das zuvor verwendete Sprach-Menü angezeigt ;))
Jetzt bin ich aber gerade auf folgendes Problem dabei gestoßen:
Programm starten -> IDR_xxxType-Menü wird angezeigt (kein Dokument offen, also sind alle irrelevanten Einträge deaktiviert) -> Dokument öffnen -> IDR_xxxType-Menü wird angezeigt (Einträge aktiviert) -> Dokument schließen -> IDR_MAINFRAME-Menü wird angezeigt (wobei hier wieder das IDR_xxxType-Menü angezeigt werden sollte.
Hoffe ihr könnt mir folgen und versteht mein Problem.
Jetzt komme ich eigentlich wieder zu meiner Ausgangsfrage dieses Threads:
Wo genau findet der Wechsel zwischen den unterschiedlichen Menüs (IDR_xxxType (Dokument(e) geöffnet) / IDR_MAINFRAME (kein Dokument geöffnet)) im Programm statt? Kann beim besten Willen keine Stelle im Code finden, die das erledigt...
Sorry, aber irgendwie fehlt mir zeitweise einfach noch der nötige Durchblick in c++ & mfc (hatte bisher Hauptsächlich mit C# und ein wenig Java zu tun).
danke, mfg