有没有办法我可以将Unicode文本添加到MBCS MFC菜单

时间:2011-08-04 15:27:35

标签: unicode mfc localization

我有一个使用MBCS字符集编译的MFC应用程序。我的主菜单中有一个子菜单,我想添加unicode字符。可以这样做吗?

1 个答案:

答案 0 :(得分:2)

您可以通过明确调用API的Unicode格式并将其传递给Unicode字符串来强制使用Unicode字符串,即使在MBCS应用程序中也是如此。

在您的情况下,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。

您可以将您的MBCS应用程序翻译成日语,俄语,等等......而无需切换到Unicode(虽然这样做是一个非常好的主意。但对于传统应用程序而言,这可能会很昂贵。)

您有2位朋友可以帮助您:appTranslator可让您轻松翻译您的应用(并管理您的翻译)(免责声明:这是我自己的广告;-)和Microsoft AppLocale可帮助您测试不同代码页中的MBCS应用程序,而无需实际更改计算机的代码页(需要重新启动)。