Beispiel #1
0
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);
	}
}
Beispiel #2
0
static INT_PTR srvTranslateMenu(WPARAM wParam, LPARAM lParam)
{
	TranslateMenu_LP((HMENU)wParam, lParam);
	return 0;
}