解决Unicode的乱码问题

今天练习孙鑫老师MFC视频中第五章的文本编辑程序时遇到了一个很令人蛋疼的问题,就是Unicode版本的问题,会出现乱码,大家都知道中文是2个字节的,如果按照非Unicode字符处理,就会出现乱码,试了半天,终于解决,现在把我遇到的问题以及解决方法整理一下:(以孙鑫老师视频中例子为例)大家也可以创建SDK工程,关键是掌握方法。

1。先新建一个工程

2。然后按照视频写好代码,当输入英文时,一切好好的,我想输入中文试试,问题来了,这时按下退格键第一次会显示一个乱码,再按一次才会删除字符,我知道这是由于Unicode的原因,但苦于一直找不出解决方法,就去网上搜,(之前写播放器时想让歌曲名动态滚动时也遇到这个问题),还真搜到了点眉目。

3.网上说要编译Unicode程序就要安装Unicode



Build-->Configurations-->Add,在Configuration中添加Unicode Debug,这样就添加一个Unicode Debug配置
      4 。Build-->Set Active Configuration,选择Win32 Unicode Debug作为当前活动配置
      5。Project-->Settings,在C/C++属性页中选择Preprocessor条目,在Preprocessor definitions中添加编译项 _UNICODE
    6.好了,这时心想应该没问题了吧,编译看看,
LINK : fatal error LNK1104: cannot open file "mfco42ud.lib"不一定是缺少mfco42ud.lib,具体看你机子缺少什么)打不开这个库?再去网上搜,原来是默认的VC不支持Unicode,这该怎么办呢,难不成要重装,我不信邪,再搜,找到了方法,只要将安装盘中你缺少的库拷贝到安装目录下就可以了(我的是D:/安装文件/VC98/MFC/Lib),再试试看那,又来了
error C2593: 'operator +=' is ambiguous         指向m_strLine+=nChar;
查一下ambiguous 什么意思,原来是引起歧义的; 模棱两可的, 含糊不清的,这怎么会呢CString不是重载了+=号吗?再一看,原来m_strLineCString的,而nCharUINT的,这个简单,转换一下, 果然。。。
    7.这个时候编译应该能通过了,运行一下, ,提示找不到MFCN42UD.DLL(不一定是这个库)这下完了哇,安装程序里只有.lib,没有.dll哇,再去搜一下,在CSDN找到了人家提供的.lib.dll,嘿嘿,借来用用,将里面的.dll文件拷贝到C:/WINDOWS/systemOK了。
现在运行一下,哈哈,终于被我解决了!!

这是我在MFC中解决的问题,运用到SDK应该是一样的!!!!

以上内容转载于:

http://www.rupeng.com/forum/thread-18313-1-1.html

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页