|
|
1
7
MessageBoxEx 并指定WORD wLanguageId字段。
更多信息 MAKELANGID 可以在这里找到。 如果这对你不起作用,另一种选择是制作自己的对话框。 |
|
|
2
2
标题是您指定的字符串,因此您应该能够翻译它。 关于按钮,文本是操作系统的一部分,无法翻译。 MessageBoxEx(Brian提到过)在语言支持方面一直表现不佳。 This MS KB article 十多年前,Windows 2000将正确支持该语言id。但它显然从未成功过。 所以你运气不太好。您唯一的解决方案是使用第三方实现,例如优秀的 XMessageBox 并通过字符串表提供翻译。 请注意 appTranslator 的词汇表包含“是”、“否”、“取消”等单词,。..翻译成25种语言,并自动翻译。 |
|
|
3
2
创建自己的 L10N 宏/函数并使用以下代码: static LRESULT __stdcall ChangeCaptions(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode == HCBT_ACTIVATE) {
SetWindowText(GetDlgItem((HWND) wParam, IDOK), L10N(GUI_OK_MSG));
SetWindowText(GetDlgItem((HWND) wParam, IDCANCEL), L10N(GUI_CANCEL_MSG));
SetWindowText(GetDlgItem((HWND) wParam, IDYES), L10N(GUI_YES_MSG));
SetWindowText(GetDlgItem((HWND) wParam, IDNO), L10N(GUI_NO_MSG));
}
return 0;
}
int addon_gui_messagebox(HWND parentHWnd, HINSTANCE hInstance, void *text, void *caption, int type)
{
int ret;
hook = SetWindowsHookEx(WH_CBT, ChangeCaptions, hInstance, GetCurrentThreadId());
ret = MessageBox(parentHWnd, text, caption, type);
UnhookWindowsHookEx(hook);
return ret;
}
正如我之前写的,MessageBoxEx目前忽略lang arg。 |