VS2010 Unicode的问题
来源:互联网 发布:苹果手机画图软件 编辑:程序博客网 时间:2024/05/20 03:47
明明使用了 _T(text)
为什么还是出错呢?
编译错误。
_T只能把字符串文字量(也就是双引号括起来的字符串)或者字符文字量(也就是单引号括起来的字符)转化为所需的样子。它无法把一个CHAR转化为一个TCHAR,也无法把一个LPSTR转化为一个LPTSTR。
为什么会这样呢?答案是:因为C++语法。
目前的C++语法,支持两种字符串。一种是直接用引号括起的,比如"Hello, World.",另一种是用引号括起,前面再加一个字母L的,比如L"Hello, World."。前一种字符串的类型是char*,或者说是const char*,后一种字符串的类型是wchar_t*,或者说是const wchar_t*。
在Visual Studio 2010中,_T是一个宏。它的作用是:如果当前的工程设置是Unicode,则在前面加一个L,否则就什么也不加。换句话说,如果工程设置为Unicode,_T("a")就相当于L"a",否则,_T("a")就相当于"a"。楼主写一个_T(text),如果工程设置为Unicode,就变成了Ltext,于是编译就出错了:没有Ltext这个变量。
如何解决?
方法1、如果是从Visual Studio 6.0升级过来的代码,因为它的工程默认设置不是Unicode的,而Visual Studio 2010的工程默认设置是Unicode的,造成问题。遇到这种情况,直接在Visual Studio 2010里面修改工程设置为不是Unicode即可。
方法2、对于那个函数而言,可以调用TextOut的非Unicode版本。
TextOut(xdc,x,y,_T(text),strlen(text));
修改为
TextOutA(xdc,x,y,text,strlen(text));
方法3、如果彻底一点,一定要用Unicode的话,微软提供了MultiByteToWideChar函数,可以用于转化,楼主可以查查这方面的资料。
- VS2010 Unicode的问题
- VS2010下Unicode问题
- VS2010下Unicode问题
- UNICODE的问题
- Unicode的问题
- 关于unicode 的问题!
- vs2010的奇葩问题
- VS2010的helplibrary问题
- VS2010 字符集的问题
- VS2010的问题
- VS2010 中const char *转换为LPCWSTR的方法Unicode
- VS2010 中const char *转换为LPCWSTR的方法Unicode
- 在VS2010下使用 UNICODE 和 ANSI 的混合编程
- 关于Unicode的问题(转)
- vs2005 unicode问题的解决
- Windows程序设计的UNICODE问题
- 关于WinCE的unicode问题
- 头痛的Unicode编码问题
- web工程地址惯用写法
- 结合rpm,rpm2cpio,cpio提取rpm包的特定文件
- svn add 包含特殊符号的问题
- Js中 关于top、clientTop、scrollTop、offsetTop的用法
- ubuntu安装QtSDK卡死的问题
- VS2010 Unicode的问题
- [BkWin界面库]界面库解读之开篇----体系结构
- Conic Section
- 内存管理内幕
- HDU 1220 Cube
- 去除本机登陆ssh的痕迹
- SQL Server 远程登录服务器管理与查询(转载)
- [php] json_encode 的第二个参数详解
- VC 如何访问另外一个进程的窗口