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

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

【问题讨论】:

    标签: unicode mfc localization


    【解决方案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 中,这打破了这种方法
    猜你喜欢
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 2011-01-16
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    相关资源
    最近更新 更多