diff --git a/grepWinNP3/default.build b/grepWinNP3/default.build index 0f4afc957..7673ae10d 100644 --- a/grepWinNP3/default.build +++ b/grepWinNP3/default.build @@ -215,8 +215,22 @@ - - + + + + + + + + + + + + + + + + diff --git a/grepWinNP3/sktoolslib_mod/Language.cpp b/grepWinNP3/sktoolslib_mod/Language.cpp index 3a79f0c96..ca7dd249c 100644 --- a/grepWinNP3/sktoolslib_mod/Language.cpp +++ b/grepWinNP3/sktoolslib_mod/Language.cpp @@ -181,6 +181,12 @@ void CLanguage::TranslateWindow(HWND hWnd) // texts with the translation TranslateWindowProc(hWnd, (LPARAM)&langmap); EnumChildWindows(hWnd, TranslateWindowProc, (LPARAM)&langmap); + EnumThreadWindows(GetCurrentThreadId(), TranslateWindowProc, (LPARAM)&langmap); + HMENU hSysMenu = GetSystemMenu(hWnd, FALSE); + if (hSysMenu) + { + TranslateMenu(hSysMenu); + } } void CLanguage::TranslateMenu(HMENU hMenu) @@ -228,7 +234,8 @@ BOOL CALLBACK CLanguage::TranslateWindowProc(HWND hwnd, LPARAM lParam) wchar_t classname[1024] = {0}; if (GetClassName(hwnd, classname, _countof(classname))) { - if (wcscmp(classname, WC_COMBOBOX) == 0) + if ((wcscmp(classname, WC_COMBOBOX) == 0) || + (wcscmp(classname, WC_COMBOBOXEX) == 0)) { // translate the items in the combobox int nSel = (int)SendMessage(hwnd, CB_GETCURSEL, 0, 0); @@ -297,6 +304,34 @@ BOOL CALLBACK CLanguage::TranslateWindowProc(HWND hwnd, LPARAM lParam) Header_SetItem(hwnd, i, &hdi); } } + else if (wcscmp(classname, WC_EDIT) == 0) + { + // translate hint texts in edit controls + const int bufCount = 4096; + auto buf = std::make_unique(bufCount); + SecureZeroMemory(buf.get(), bufCount * sizeof(wchar_t)); + Edit_GetCueBannerText(hwnd, buf.get(), bufCount); + auto sTranslated = GetTranslatedString(buf.get(), pLangMap); + Edit_SetCueBannerText(hwnd, buf.get()); + } + else if (wcscmp(classname, TOOLTIPS_CLASS) == 0) + { + const int bufCount = 4096; + auto buf = std::make_unique(bufCount); + auto toolCount = (int)SendMessage(hwnd, TTM_GETTOOLCOUNT, 0, 0); + for (int i = 0; i < toolCount; ++i) + { + SecureZeroMemory(buf.get(), bufCount * sizeof(wchar_t)); + TOOLINFO tt = {0}; + tt.cbSize = sizeof(TOOLINFO); + tt.lpszText = buf.get(); + SendMessage(hwnd, TTM_ENUMTOOLS, i, (LPARAM)&tt); + + auto sTranslated = GetTranslatedString(buf.get(), pLangMap); + tt.lpszText = sTranslated.data(); + SendMessage(hwnd, TTM_SETTOOLINFO, 0, (LPARAM)&tt); + } + } } return TRUE;