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

Posted

技术标签:

【中文标题】有没有办法可以将 unicode 文本添加到 MBCS MFC 菜单【英文标题】:Is there a way I can add unicode text to a MBCS MFC menu 【发布时间】:2011-08-04 15:27:34 【问题描述】:

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

【问题讨论】:

【参考方案1】:

您甚至可以在 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 应用代码页而不实际更改计算机的代码页(需要重新启动)。

【讨论】:

InsertMenuW(m_hMenu,i,MF_BYPOSITION,j,L"\u573F") 只是给了我一个?在我的菜单中。我错过了什么吗? 哪个操作系统?如果 XP:您是否安装了对东亚语言的支持(iow 字体)? Windows 7 Ultimate。我安装了中文代码页,虽然它不活动。 Weird :-( 第一个:使用 Vista+,默认安装东亚字体。我在 CMainFrame::OnCreated() 的末尾添加了这一行,它工作正常: InsertMenuW(GetMenu() ->m_hMenu,0,MF_BYPOSITION,10000,L"\u573F") ; 这将起作用,除非您使用 MFCFeaturePack 并且正在使用 CMFCMenuBar。 CMFCMenuBar 将菜单文本内部存储在 CString 中,这打破了这种方法

以上是关于有没有办法可以将 unicode 文本添加到 MBCS MFC 菜单的主要内容,如果未能解决你的问题,请参考以下文章

将字符串(带有 unicode 字符)添加到字典时添加额外的斜杠( \ )

有没有办法在“。”之前将“文本”添加到字符串中?示例:10.jpg

有没有办法通过css慢慢地将字母添加到文本中? [关闭]

将Unicode字符添加到Cognos Analytics表达式数据中

将文本装饰添加到控制台输出

使用 ODFpy 将部分添加到 OpenDocument 文本文件