有没有办法将unicode文本添加到MBCS MFC菜单

有没有办法将unicode文本添加到MBCS MFC菜单,unicode,mfc,localization,Unicode,Mfc,Localization,我有一个用MBCS字符集编译的MFC应用程序。我有一个子菜单关闭我的主菜单,我想添加unicode字符。可以这样做吗?通过明确调用API的Unicode格式并将Unicode字符串传递给它,甚至可以在MBCS应用程序中强制使用Unicode字符串 在您的例子中,ModifyMenuW()是设置菜单项文本的API(假设菜单项已经存在): 此代码显示的是中文表意文字(我不知道其含义),而不是原始文本 字符串前面的L表示它是一个Unicode字符串 \U57 3F 是您在C++ ASCII源文件中编码

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

通过明确调用API的Unicode格式并将Unicode字符串传递给它,甚至可以在MBCS应用程序中强制使用Unicode字符串

在您的例子中,ModifyMenuW()是设置菜单项文本的API(假设菜单项已经存在):

此代码显示的是中文表意文字(我不知道其含义),而不是原始文本

字符串前面的
L
表示它是一个Unicode字符串<代码> \U57 3F 是您在C++ ASCII源文件中编码Unicode字符的方式。API名称末尾的
W
:表示宽,表示API的Unicode形式

请注意,如果您的目标是翻译应用程序的完整UI,那么这是一个完全不同的故事:我在这里展示的方法仅适用于一次性调用。这样就无法创建完整的UI

你可以将你的MBCS应用程序翻译成日语、俄语或其他语言,。。。不切换到Unicode(虽然切换到Unicode是一个很好的主意,但对于传统应用来说,这可能会很昂贵)


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

InsertMenuW(m_-hMenu,i,MF_-BYPOSITION,j,L“\u573F”)在我的菜单中给我一个?我是不是遗漏了什么?哪个操作系统?如果XP:你安装了对东亚语言的支持(iow字体)吗?WIndows 7 Ultimate。我安装了中文代码页,但它不是活动的。奇怪的是:-(1:使用Vista+,东亚字体默认安装。我在CMInframe::OnCreated()的末尾添加了这一行,效果很好:InsertMenuW(GetMenu()->m_-Humenu,0,MF_-BYPOSITION,10000,L“\u573F”);除非您使用的是MFCFeaturePack并且使用的是CMFCMenuBar,否则这将起作用。CMFCMenuBar将菜单文本内部存储在CString中,这打破了这种方法
ModifyMenuW(GetMenu()->m_hMenu,ID_APP_ABOUT, MF_BYCOMMAND , 0, L"\u573F");