VC窗口程序中出现中文乱码的解决

用 VC6 的 MFC AppWizard 生成的窗口程序,窗口标题或者标签用中文,编译执行发现中文成乱码了,奇怪,以前怎么没有出现这种问题呢?

在网上找找资料才知道,原来我现在用的是非中文 XP 操作系统,在用向导生成窗口程序的过程中,没有中文语言的选项。不知道为什么,我的操作系统的区域都是设置成的中国,语言也是设成的简体中体,都没错的,VC6 安装程序看我的界面不是中文就不给我装上中文语言支持的动态库。

解决办法是:可以在 VC6 安装光盘中找到 APPWZCHS.DLL 文件(也点击  6.0.8168.0__APPWZCHS.zip 可从此处下载),拷入到 C:/Program Files/Microsoft Visual Studio/COMMON/MSDev98/Bin/IDE,确切位置视你的 Visual Studio 安装目录而定。这样重新用 MFC AppWizard 建一个工程,在第一步就可以选上简体中文了,在程序中的界面上写中文,然后执行就没问题了。

如果你的工程中的菜单、对话框、字符串等资源不是由AppWizard生成的,而是手工添加的,你必须保证该资源的Language选项为Chinese(P.R.C)

还有一个解决方案是:不需要 APPWZCHS.DLL文件,找到工程中的 rc 文件(资源文件),把其中LANGUAGE 9, 1的地方改为4,2;codepage(1252)改为codepage(936);另外把#include "afxres.rc" 改成#include "l.chs/afxres.rc";把"afxres.rc" 改成"l.chs//afxres.rc"即可,其中的数据根据不同文字代码可能不同,例子中的是英文,改为中文。

改 rc 文件的办法我试过,改过之后虽然执行时界面显示中文都没有问题,可是程序响应按钮操作的时候却出现了 Debug Assertion Failed! _CrtIsValidHeapPointer(pUserData)......非常致命的错误,可能这跟修改 rc 文件是无关的。

后来试了,的确,出现 _CrtIsValidHeapPoint 错误与修改 rc 文件无关,是因为 delete 一个指针时报的错,至今原因不明,因为同样的代码昨天还行,今天就不行了。随意猜测一下:是否有可能是昨天用的 Debug 出的 Dll 文件,今天用的 Release 出的 Dll 文件。

就我个人看来,第一种方法比较好,用 MFC AppWizard 生成的窗口像确定啊,取消等按钮或菜单都是中文的,不需要你一个个的改动。

更详细内容请看下面的连接页面。

参考资料:1. VC++编程出现中文乱码

 

来源: http://www.blogjava.net/Unmi/archive/2010/07/12/125715.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值