【问题标题】:How can I change the language in AfxMessageBox?如何更改 AfxMessageBox 中的语言?
【发布时间】:2013-06-18 03:55:31
【问题描述】:

我有一个使用 AfxMessageBox 显示消息框的 MFC 应用程序。该应用程序本身允许最终用户更改用户界面语言。在内部,它是通过使用 LCID(或 FindResourceEx API)加载资源来实现的。我的问题是我似乎无法让 AfxMessageBox 采用 LCID 来更改 OK、Cancel 按钮等的语言。这也会影响 File和文件夹打开对话框窗口。

任何想法如何做到这一点?

PS。这种方法必须在 Windows XP 及更高版本下工作。

【问题讨论】:

    标签: c++ winapi localization mfc messagebox


    【解决方案1】:

    根据this SO article,对此没有标准函数,有一个指向 CodeProject 文章“Localizing System MessageBox”的链接,其中包含 DLL 的源代码(它在 c# 中,但似乎很简单,可以用 C++ 重写)使用 Windows Hook,以便您可以为 MessageBox 按钮提供自己的文本;在同一篇文章的讨论部分中,甚至还有对sizing buttons to the text 的建议。

    【讨论】:

    • +1 用于链接到不创建自己的消息框的文章。讨厌那些(消息框)!我认为这将涵盖微软的懒惰和无法为其操作系统提供体面的本地化。一个后续问题——有没有办法改变 MFC 代码本身来解释文章中描述的钩子?我静态链接到 MFC。
    • 是的,您可以添加代码以加载按钮文本以及在CWinApp::InitInstance() 中对Register() 的调用以及在CWinApp::ExitInstance() 中对Unregister() 的调用,但我建议您导出来自CWinApp 的新类,将您的代码放在那里并将您的程序基于这个新类,这样您就不会受到 MFC 更新和版本的影响。
    • MFC 更新?你在开玩笑吗。它几乎死在水里:)
    猜你喜欢
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 2013-09-28
    • 2015-01-19
    • 2016-05-20
    • 2013-11-06
    • 1970-01-01
    相关资源
    最近更新 更多