Visual c++ MBCS文件菜单生成????人物

Visual c++ MBCS文件菜单生成????人物,visual-c++,mfc,Visual C++,Mfc,我正在使用MFC开发MBCS应用程序。我正在努力支持亚洲语言。为了这次讨论的目的,我们会说我在努力支持中国人。通过将汉字直接粘贴到RC文件中,我能够通过MessageBoxW和对话框屏幕支持弹出对话框。我无法使用资源视图或直接编辑RC文件使文件菜单正常工作。每当我输入任何亚洲字符时,屏幕都会显示???。一对于每个字符。我尝试使用C++修改菜单中的菜单。我得到更多的问号。VisualStudio显示了一切工作,并且RC文件是unicode UTF-16。我无法轻松地将我的项目转换为unicode模

我正在使用MFC开发MBCS应用程序。我正在努力支持亚洲语言。为了这次讨论的目的,我们会说我在努力支持中国人。通过将汉字直接粘贴到RC文件中,我能够通过MessageBoxW和对话框屏幕支持弹出对话框。我无法使用资源视图或直接编辑RC文件使文件菜单正常工作。每当我输入任何亚洲字符时,屏幕都会显示???。一对于每个字符。我尝试使用C++修改菜单中的菜单。我得到更多的问号。VisualStudio显示了一切工作,并且RC文件是unicode UTF-16。我无法轻松地将我的项目转换为unicode模式。西班牙语、法语和德语都很好,德语中的一个单词不起作用,但这不是一个表演的障碍。下一步我应该试试什么


提前谢谢

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

关于在MBCS应用程序中使用Unicode,有些事情是可能的,有些事情不是。例如,我制作了一个MBCS应用程序,在ListView控件中显示和编辑程序字符串、消息、菜单等的翻译,但是ListView确实有一条特定的消息将其转换为Unicode LVM_SetUnicode Deformat并支持操作,另请参见CCM_SetUnicode Deformat。虽然菜单不是控件,但它们确实具有广泛的Unicode函数

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

测试1:

您提到尝试修改菜单,但这将尝试修改现有菜单。相反,请尝试InsertMenuW或InsertMenuItemW。任何unicode字符串都应该正确显示,所以不要只使用中文,还要使用其他语言,如希腊语或俄语。顺便说一句,我看不出法语和德语是如何使用相同的代码页的——西欧。您的测试机器的系统代码页是什么

测试2:如果上述操作失败

尝试使用单个unicode菜单项作为其根来更改整个菜单集菜单

测试3:如果上述操作失败

然后需要检查包含菜单的窗口是否必须是Unicode。创建一个简单的Hello World Win32应用程序,或者查找一个示例,如果Visual Studio没有为您这样做,这些基本上是注册窗口类,创建主窗口并启动消息循环-您还必须添加一个菜单,显式地使用宽版本的菜单函数。如果这不起作用,请尝试将创建窗口的代码更改为unicode。通过这种方式,您将知道是否需要unicode窗口来拥有菜单


请做这些测试并告诉我们结果。如果需要,我将进一步发布。

您不能将MBC设置为宽功能。改用::modifyMenuwhenu,…,Lstring;请注意L前缀。从我记得看到的其他消息来看,MBCS有时无法工作,这取决于某些较新版本的Visual Studio中的某些设置。启动一个新的MBCS项目并用希腊语进行测试。注意,非拉丁语言的文件名会有问题,因此转换为Unicode可能更容易。