【发布时间】:2011-08-04 15:27:34
【问题描述】:
我有一个使用 MBCS 字符集编译的 MFC 应用程序。我的主菜单中有一个子菜单,我想向其中添加 unicode 字符。可以吗?
【问题讨论】:
标签: unicode mfc localization
我有一个使用 MBCS 字符集编译的 MFC 应用程序。我的主菜单中有一个子菜单,我想向其中添加 unicode 字符。可以吗?
【问题讨论】:
标签: unicode mfc localization
您甚至可以在 MBCS 应用程序中强制使用 Unicode 字符串,方法是显式调用 API 的 Unicode 形式并将其传递给 Unicode 字符串。
在您的情况下, ModifyMenuW() 是设置菜单项文本的 API(假设菜单项已经存在):
ModifyMenuW(GetMenu()->m_hMenu,ID_APP_ABOUT, MF_BYCOMMAND , 0, L"\u573F");
这段代码显示一个汉字(我不知道它的意思)而不是原文
字符串前面的L 表示它是一个Unicode 字符串。 \u573F 是在 C++ ASCII 源文件中编码 Unicode 字符的方式。 API名称末尾的W:代表Wide,表示API的Unicode形式。
请注意,如果您的目标是翻译应用程序的完整 UI,则完全是另一回事:我在这里展示的方法仅适用于一次性调用。你无法以这种方式创建完整的 UI。
您可以将您的 MBCS 应用程序翻译成日语、俄语等...而无需切换到 Unicode(尽管进行这种切换是一个非常好的主意。但这对于旧版应用程序来说可能代价高昂)。
您有 2 个朋友可以帮助您:appTranslator 可让您非常轻松地翻译您的应用(并管理您的翻译(免责声明:这是我自己的广告 ;-) 和 Microsoft AppLocale 帮助您在不同的环境中测试 MBCS 应用代码页而不实际更改计算机的代码页(需要重新启动)。
【讨论】: