WTL中文菜单显示乱码解决方法
问题描述:使用WTL向导创建程序,将菜单项改成中文就显示两个问号乱码:??
从别的地方复制过来的资源也会出问题,网上查了资料,参考:
http://blog.youkuaiyun.com/jimmyzj123456/article/details/8533261
解决方法:在Solution Explorer中展开Resource Files,找到项目名称.rc文件,右键单击选择View Code,选择Yes,将代码中
pragma code_page(1252)
修改为
pragma code_page(936)
我这不成功。后来又看到上面的一行:
发现有 English
对比了其他正确的,复制过来
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
解决问题。
最终结果为:
/////////////////////////////////////////////////////////////////////////////
// 中文(简体,中国) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
不需要写:#pragma code_page(936)
这样以后添加的中文就不是乱码了,之前的中文还是乱码。要逐个修改,或者是之前先复制出来,修改了配置,再粘贴进去。
使用过程中又出现了其他问题,其他地方复制过来的部分菜单还是乱码,我就仔细比对了几个 *.rc文件。发现,在乱码的rc文件中出现了两段定义,1段是中文的定义,一段是英文的定义,如果是在英文定义的范围内,这就造成了中文乱码。
*.rc基本结构如下:
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "atlres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// 中文(简体,中国) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
…………………………
#endif // 中文(简体,中国) resources
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// 英语(美国) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
……………………………………
#endif // 英语(美国) resources
/////////////////////////////////////////////////////////////////////////////
解决方案:
可以直接全部放入中文定义中,或者是分开,中文是中文,英文归英文。我是偷懒了,全部放到中文定义中。