Hauptmenü verändern



  • Hallo Leute!

    Ich habe ein Programm mit einer Dialog-Oberfläche erstellt und ein Menü eingefügt. Ein Menüpunkt ist zum Beispiel File. Darunter befindet sich ein Untermenü mit den Punkten Source und Close.
    Nun will ich die Sprache der Einträge ändern können. Ich kann bereits die Einträge des Untermenüs verändern. Dazu verwende ich

    CMenu* mmenu = GetMenu();
    CMenu* submenu = mmenu->GetSubMenu(0);

    submenu->ModifyMenu(ID_FILE_CLOSE, MF_BYCOMMAND, ID_FILE_CLOSE,name);

    Nun will ich aber auch die Obermenüeinträge verändern. Dazu wollte ich ebenfalls die ModifyMenu-Methode für das Hauptmenu verwenden.

    mmenu->ModifyMenu(ID_FILE, MF_BYCOMMAND, ID_FILE,name);

    Allerdings habe ich dabei kein Erfolg. Die Einträge verändern sich nicht.

    Vielen Dank!



  • leg doch für mehrere sprachen die einzelnen menüs an und lade das jeweils richtige.. ist einfacher und praktischer als so wie du es vor hast.

    oder du benutzt verschiedene stringtables und lädst die dann dementsprechend...



  • Das ist auch eine gute Idee, allerdings soll die Sprache über eine beliebig erweiterbare Sprachdatei eingeladen werden. Das bedeutete, ich kann die Menüs leider nicht vorher erstellen, da ich die Sprachen und die dazugehörigen Einträge nicht vorher kenne.



  • Bei mir funktioniert folgendes:

    menu->ModifyMenu(0,MF_BYPOSITION,0, "neuer Name");
    


  • Das funktioniert bei mir ebenfalls, allerdings verändern sich die Einträge nur, wenn ich mit der Maus auf die Einträge gehe. Außerdem werden die alten Bezeichnungen radikal überschrieben, sodass von Bezeichnungen die länger sind, der Rest stehen bleibt.
    Gibt es eine Möglichkeit nur das Menü zu aktualisieren, so dass die Menüeinträge gleich mitverändert werden?



  • Hi,

    kannste ja mal hier rein schauen:

    http://support.microsoft.com/kb/198846/de

    hier wird pro neuer Sprache eine MFC-Extension-Dll erzeugt, in der die jeweiligen ressourcen liegen. So hat jede Sprache ihr eigenes Menü, Dialog, Stringtable, usw. Element und du kannst jeder Zeit ohne große Probleme neue Sprachen hinzufügen. Buttons usw. können (müssen aber nicht) so auch problemlos an die jeweilige Stringlänge, die ja von Sprache zu Sprache unterschiedlich ist, in der Breite und Höhe angepasst werden.
    Noch viel Spass bei der Lokalisierung 😉



  • RessourcenDlls schrieb:

    Hi,

    kannste ja mal hier rein schauen:

    http://support.microsoft.com/kb/198846/de

    hier wird pro neuer Sprache eine MFC-Extension-Dll erzeugt, in der die jeweiligen ressourcen liegen. So hat jede Sprache ihr eigenes Menü, Dialog, Stringtable, usw. Element und du kannst jeder Zeit ohne große Probleme neue Sprachen hinzufügen. Buttons usw. können (müssen aber nicht) so auch problemlos an die jeweilige Stringlänge, die ja von Sprache zu Sprache unterschiedlich ist, in der Breite und Höhe angepasst werden.
    Noch viel Spass bei der Lokalisierung 😉

    ähnliches hab ich vorgeschlagen. er will die resourcendatei aber direkt bearbeiten können. das heißt ne *.ini oder *.dat oder ähnliches.

    erst lesen, dann posten.



  • Jetzt fühle ich mich doch glatt genötigt zu antworten weshalb mein Post noch kam.

    1. Habe ich die Posts in diesem Thread gelesen
    2. Steht bei Dir noch lange nichts von einer Ressourcen-Dll. Man kann nämlich auch dummerweise alle Sprachressourcen in eine Dll, bzw. direkt in die MainApp reinklatschen.
    3. Desweiteren wird jemand, der sich zum ersten mal mit Lokalisierung beschäftigt, durch deine 1-2 Sätze vlt. nicht schlau und braucht eine genauere Anleitung (wie z.B. unter dem Link zu finden wäre).
    4. steht da nix von .ini oder .dat Datei. Er will eine "Sprachdatei" haben. Das kann er eben über so eine Dll recht leicht erreichen. Da hat Aleks1985 halt eine Dll als Sprachdatei.
    5. finde ich solche Antworten wie von Dir (@Machine) vollkommen überflüssig, da sie niemandem der Hilfe braucht wirklich weiterhelfen und Threads nur unnötig aufblasen. Hab ich Dir deine Idee etwa geklaut und Sie als meine ausgegeben?!?
    ...
    Nein? ... na also.

    Jetzt kann man sagen, dieser Post ist genauso überflüssig und da habt ihr wahrscheinlich auch Recht.

    Ende im Gelände



  • Guten Morgen!
    Danke erstmal für die Vorschläge. Die Möglichkeit mit einer .dll zu arbeiten ist auch sehr gut...werd ich mir fürs nächste Projekt auf jedenfall ansehen. In diesem Fall hab ich allerdings wirklich eine .dat-Datei, da ich diese mit Excel bearbeiten kann und weitere Sprachen hinzufügen kann.

    Mir ists ja jetzt auch schon gelungen die Einträge zu verändern, allerdings verändern sich die nur, wenn das Menü neu gezeichnet wird ( wenn ich mit der Maus drüber fahre). Dies ist nicht Sinn und Zweck der Sache, allerdings kann ich auch nicht den ganzen Dialog neu erstellen, da bereits Einstellungen und Darstellungen auf der Oberfläche erstellt worden.
    Gibt es eine Methode nur das Menü zu aktualisieren?


Anmelden zum Antworten