3.关于VS2008 中的pDC->TextOut 参数转换问题 <Unicode Character>
来源:互联网 发布:2017基金业绩排行知乎 编辑:程序博客网 时间:2024/06/04 19:03
在vs2008新建一个单文本文档的MFC Application工程中,在view里的ondraw函数添加语句:pDC->TextOutW(0,0,"hello world !gwb");
而会提示一个错误:
error C2664: 'BOOL CDC::TextOutW(int,int,const CString &)' : cannot convert parameter 3 from 'const char [17]' to 'const CString &'
然后上网也出查找了一下,看到了一些类似的问题.
///////////////////////////////////////////////////////////////////////////////////////////////
最近在将一个以前的大项目从VC6升级到VC2005时,也就是VC8时,遇到了一个非常让人困惑的问题,那就是:
在vs2005新建一个sdi文档中的view里的ondraw函数不可以执行pDC->TextOut(5,5,"hello");该语句,编译无法通过。
但该升级的项目程序中包含有大量的类似于pDC->TextOut(x,y,"xxxx");的语句,确没有任何改动,而顺利通过编译。
这是为什么呢?
为了解决这个问题,我特意如下做了一个测试:
1、在vc6下创建了一个sdi文档的程序,并在view中的ondraw函数中增加pDC->TextOut(5,5,"hello");函数,编译运行测试,毫无疑问,是OK的。
2、将改程序直接用VS2005打开,自动升级完毕,ondraw函数中也没有任何改变,单击运行,OK,也是正常的。
3、在VC2005下创建了一个sdi文档的程序,并在view中的ondraw函数中增加以下语句:
pDC->TextOut(5,5,"hello"); //error
pDC->TextOut(5,5,_T("hello")); //ok
pDC->TextOut(5,5,L"hello"); //ok
编译运行测试,结果如注释部分所示。
通过一个下午的摸索,终于我自己也算是部分找到了答案:
VC8默认编译环境为unicode
vc6升级到vc8之后,其环境默认为Use Multi-Byte character set
字符集环境设置:menu->Project->Tmd Properties->Configuartions Properties->Character Set,该选项包含下面3种:
1、No Set
2、Use unicode character set //必须加_T或L对“XXXX”字符串进行转换
3、Use Multi-Byte character set
如果是从升级过来的程序,无论选择1、2、3哪个选项:
pDC->TextOut(5,5,"hello");
均没有任何编译错误。不知道为什么对于选择2,编译器却没有做出错误提示,而是顺利通过???
但是下面的语句:
str.Format("%.2f",2.1);
则无法在选择2的情况下通过,其它1、3则OK。
如果是直接从vs2005创建的程序上面两个语句在选择2的情况下均无法通过编译,加_T("")或者L""之后才OK。如果选择1和3,则亦可以顺利编译通过并正确运行。
///////////////////////////////////////////////////////////////////////////////////////////////
其实,我们用VS2008在建立一个单文本文档的MFC Application工程的时候的第一个界面就会出现一个选项Use Unicode libraries.一般的默认是选中的.
如果我们选中上面这个选项的话呢,就和平常一样的.不会出现上面的那个编译错误.
而如果没有选中了的话.我们可以修改pDC->TextOut语句为pDC->TextOut(5,5,_T("hello")); or pDC->TextOut(5,5,L"hello");
然后在去编译就可以通过了.OK.
- 3.关于VS2008 中的pDC->TextOut 参数转换问题 <Unicode Character>
- 关于 visual studio(vs2005/vs2008/vs2010)中的Character Set
- 关于VC2005 中的Character Set问题
- VS中CDC类TextOut()参数不匹配问题
- vs2008 unicode工程问题集
- pdc 与 hdc 转换
- 关于TextOut输出的字符串透明的问题
- CDC textout函数关于CString对象的输出问题
- VS2008 UNICODE编码 WCHAR 转换为char *
- VS2008中的类型转换
- Qt中的unicode转换
- Qt中的unicode转换
- 关于混排文本修改转换系列问题--ASCII & UniCode
- Unicode转换中文问题
- 关于在OpenGL在vs2008中的一些配置问题
- TextOut 在VS2008 MFC 中使用
- 关于VS2008问题!
- 关于unicode 的问题!
- JQuery实现去掉一个表格的外边框,只保留内边框
- Ubuntu 13.10 桌面分辨率设置
- Java学习-多态
- 【转】【Android】开源项目汇总-备用
- make menuconfig内核编译时,Error opening terminal: xterm 错误解决方法
- 3.关于VS2008 中的pDC->TextOut 参数转换问题 <Unicode Character>
- 专注做好一件事
- JS加入收藏夹
- 服务器主动推送和@技术
- 如何监听网络断开的事件
- 4.MFC Tab控件的使用基础实例
- 如何设置amcap
- Android回顾之Android.mk文件语法规范
- 不用开辟数据的临时空间,怎么完成字符串的逆转?