急!!VS2008的MFC问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 03:53:32
我用VS2008编一个MFC程序,在设置向导中有一个默认选中的使用Unicode库,这时在窗口中输出汉字,输出的是乱码。反正进行输出汉字的操作都是乱码,这是怎么回事?而它菜单上的汉字有不是乱码。
如果取消使用Unicode库又不存在这个问题。我想在MFC程序使用Unicode库。
这个问题这么解决?高手回答。
应该不可能哟!
比如说这个函数就有问题.
AfxMessageBox((LPCTSTR)"汉字");
我在试验了一下显示英文也是乱码。

你要使用uncode的话,要保证你的程序里面的字符串是宽字符,也就是要经过宽字符的转换,(LPCTSTR)是什么?这是强制转换,并不对字符的实际类型进行转换,不是宽字符转换,比如你的AfxMessageBox((LPCTSTR)"汉字"); 要这么写
AfxMessageBox(L"汉字");或者AfxMessageBox(TEXT("汉字"));推荐后者,后面的表达形式无论是否使用UNICODED都能正常运行
楼主可以去头文件里面找一个L,_T,TEXT()三个宏定义的意义

把你输出汉字的代码贴上来,应该是你用错东西了

你不能这样写,你要这样

AfxMessageBox(_T("汉字"));

你的代码写错了。

当你使用Unicode库时,所有的字符串都得这样写:
L"some string", 注意:前面的这个L必须要
或者 _T("some string")

你自己都说了选用 Unicode 字符集,却硬要给函数传递一个多字节字符集的字符串。编译都已经提示你不能把从 char[4] 隐式转换为 LPCTSTR 了吧?

"汉字" : 多字节字符集
L"汉字" : Unicode 字符集
_T("汉字") : 根据宏定义自动选择多字节字符集或 Unicode 字符集