Menü-Text ändern
-
Hallo,
ich möchte mein Menü auf Englisch umschalten können. Weiß jemand, wie ich den Text der Menü-Items verändern kann?
(Ich programmiere in mit VisualC++ 2010)
Vielen dank für eure Hilfe
D_Lar
-
void changeLanguage( int sprache ) // 1 = deutsch, 2 = englisch, 3 = slov, 4 = franz. { if (sprache == 1) // deutsch { LCID id = MAKELCID( MAKELANGID( LANG_GERMAN, SUBLANG_GERMAN ), SORT_DEFAULT ); SetThreadLocale(id); if (IsOSVerWindowsVista()) { HMODULE hKernel32 = GetModuleHandle(_T("Kernel32.dll")); FARPROC pFn = GetProcAddress(hKernel32, "SetThreadUILanguage"); FP_SetThreadUILanguage pSetThreadUILanguage = (FP_SetThreadUILanguage)pFn; LANGID langid = pSetThreadUILanguage(id); } HMENU menu = GetMenu(((CACS400App *)AfxGetApp())->GetMainWnd()->GetSafeHwnd()); DestroyMenu( menu ); menu = CreateMenu(); CMenu menu2; menu2.LoadMenu(IDR_MAINFRAME); menu = menu2.GetSafeHmenu(); SetMenu( ((CACS400App *)AfxGetApp())->GetMainWnd()->GetSafeHwnd(), menu ); } // ende 1 / deutsch if (sprache == 2) // englisch { // Locale setzen für Dialoge LCID id = MAKELCID( MAKELANGID( LANG_ENGLISH, SUBLANG_ENGLISH_UK ), SORT_DEFAULT ); SetThreadLocale(id); if (IsOSVerWindowsVista()) { HMODULE hKernel32 = GetModuleHandle(_T("Kernel32.dll")); FARPROC pFn = GetProcAddress(hKernel32, "SetThreadUILanguage"); FP_SetThreadUILanguage pSetThreadUILanguage = (FP_SetThreadUILanguage)pFn; LANGID langid = pSetThreadUILanguage(id); } // das Hauptmenü setzen HMENU menu = GetMenu(((CACS400App *)AfxGetApp())->GetMainWnd()->GetSafeHwnd()); DestroyMenu( menu ); menu = CreateMenu(); CMenu menu2; menu2.LoadMenu(IDR_MAINFRAME); menu = menu2.GetSafeHmenu(); SetMenu( ((CACS400App *)AfxGetApp())->GetMainWnd()->GetSafeHwnd(), menu ); } // ende 2 / englisch }ahja und in den resourcen musst du natürlich noch dein menü kopieren und als Englisch(Großbritanien) einfügen
-
Hallo LordTerra,
danke für deine schnelle Antwort, das genau so eine Funtion möchte ich schreiben, allerdings ist das eine Lösung mit MFC oder? Ich möchte das ganze ohne MFC programmieren. Hast du da auch ein Tip für mich?
Ist es überhaupt möglich, den Text er Menü-Items zu ändern, oder muss ich das Menü löschen und neu erzeugen?
Gruß D_Lar
-
ja das ist mit mfc ... wie das ohne geht kann ich dir leider nicht sagen ...
-
So, jetzt hab ich was gefunden: Umschalten zwischen 2 Menüs, welche in der .rc - Datei initiallisiert sind.
http://pronix.linuxdelta.de/C/win32/win32_3.shtml
Ist es eigentlich möglich, die Beschriftungen in der Resource-Datei variabel zu machen? also statt
POPUP "Bearbeiten"ein Char-/wchar_t-Feld zu nehmen,
POPUP Felddas ganz zu Beginn des Programms initiallisiert wird?
Danke für eure Hilfe!
-
so, ich habe das problem jetzt gelöst, indem ich ein neues Menü erzeuge. Hab dabei Infos unter http://www.winprog.org/tutorial/menus.html gefunden.
Gruß D_Lar