首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MBCS文件菜单生成?人物

MBCS文件菜单生成?人物
EN

Stack Overflow用户
提问于 2019-04-10 09:36:44
回答 1查看 146关注 0票数 0

我正在使用MFC开发一个MBCS应用程序。我正在努力支持亚洲语言。出于这个讨论的目的,我们将会说我正在尝试支持中文。通过将汉字直接粘贴到RC文件中,我能够通过MessageBoxW和对话框屏幕支持弹出对话框。无论是使用资源视图还是直接编辑RC文件,我都无法让文件菜单工作。每当我键入任何亚洲字符时,屏幕上都会显示?一个?对于每个字符。我尝试过使用ModifyMenuW修改C++中的菜单。我得到了更多的问号。Visual Studio显示一切正常,RC文件是unicode (UTF-16)。我不能轻易地将我的项目转换为unicode模式。西班牙语、法语和德语都可以正常工作(德语中的Esset中有一个不能工作,但这不是问题所在)。下一步我应该尝试什么?

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2019-04-10 23:47:44

好吧,简单的答案是将应用程序更改为Unicode,但这并不总是简单的,或者根本不可能。

关于在MBCS应用程序中使用Unicode,有些事情是可能的,有些则不是。例如,我制作了一个MBCS应用程序,在ListView控件中显示和编辑程序字符串(消息、菜单等)的翻译,但是ListView确实有一个特定的消息来将其转换为Unicode (LVM_SETUNICODEFORMAT)并支持操作(参见CCM_SETUNICODEFORMAT)。虽然菜单不是控件,但它们确实有“宽”(Unicode)功能。

如果您希望在应用程序中使用Unicode,则需要进行一些测试。不能保证成功,但你至少可以得出一些结论,并确定你想做的事情是否可能。

Test1:

您提到尝试ModifyMenuW(),但这将尝试修改现有菜单。相反,可以尝试使用InsertMenuW()InsertMenuItemW()。任何unicode字符串都应该正确显示,所以尝试不仅仅是中文,还有其他语言(例如希腊语或俄语)。顺便说一句,我看不出法语和德语是如何工作的(他们使用相同的代码页-西欧)。你的测试机器的系统代码页是多少?

Test2: (如果以上操作失败)

尝试使用单个(unicode)菜单项作为其根来更改整个菜单(SetMenu())。

Test3: (如果以上操作失败)

然后您需要检查包含菜单的窗口是否必须是Unicode。创建一个简单的"Hello World“Win32应用程序,或者找到一个示例,如果Visual Studio不能这样做的话(这些操作主要是注册窗口类、创建主窗口并启动消息循环)--您也必须添加一个菜单,显式地使用菜单函数的”宽“版本。如果这不起作用,请尝试将创建窗口的代码更改为unicode。这样你就会知道你是否需要一个unicode窗口来拥有菜单。

请进行这些测试,并让我们知道结果。我会进一步张贴,如果需要。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55603518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档