MIR_CORE_DLL(void) TranslateMenu_LP(HMENU hMenu, int _hLangpack) { MUUID *uuid = Langpack_LookupUuid(_hLangpack); MENUITEMINFO mii = { 0 }; mii.cbSize = sizeof(mii); for (int i = GetMenuItemCount(hMenu) - 1; i >= 0; i--) { TCHAR str[256]; mii.fMask = MIIM_TYPE | MIIM_SUBMENU; mii.dwTypeData = (TCHAR*)str; mii.cch = _countof(str); GetMenuItemInfo(hMenu, i, TRUE, &mii); if (mii.cch && mii.dwTypeData) { TCHAR *result = (TCHAR*)LangPackTranslateString(uuid, (const char*)mii.dwTypeData, TRUE); if (result != mii.dwTypeData) { mii.dwTypeData = result; mii.fMask = MIIM_TYPE; SetMenuItemInfo(hMenu, i, TRUE, &mii); } } if (mii.hSubMenu != NULL) TranslateMenu_LP(mii.hSubMenu, _hLangpack); } }
static INT_PTR srvTranslateMenu(WPARAM wParam, LPARAM lParam) { TranslateMenu_LP((HMENU)wParam, lParam); return 0; }