解决char *无法转换为LPCWSTR问题
2011-11-16 09:35
204 查看
过去微软只遵循ANSI标准,而现在为了兼容、跨平台,从VS2005后,微软工程默认使用的字符集为unicode,所以,过去在VC6.0中编译成功的程序,在新环境中编译错误。 经我总结,解决办法有以下几种: 1.直接改工程属性 项目菜单->你的工程属性(菜单最后一个选项)->配置属性->常规->项目默认值->unicode改为未设置
2.强行使用ANSI标准MessageBoxA
Win32 API也分2种版本, MessageBoxA / MessageBoxW,MessageBox根据是否定义_UNICODE宏而定义到其中一个版本,而MessageBoxA是老标准的API。
3.使用TCHAR和_stprintf_s
使用通用编程方法,让编译器自己做决定。
TCHAR定义到WCHAR或CHAR, 这两个分别是wchar_t或char_stprintf_s是swprintf或sprintf等, 其他还有很多, 你可以到tchar.h中找找_T或TEXT宏也会在宽字符时在字符串前加L, 多字符时不起作用第三种方法:代码示例
TCHAR szChar[20];
_stprintf_s(szChar,_T("char code is %d"),wParam);
MessageBox(hwnd,szChar,_T("char"),0);
相关文章推荐
- 解决char *无法转换为LPCWSTR问题
- VC2010 [转]解决char *无法转换为LPCWSTR问题
- VS2013中无法从XXX转换为“LPCWSTR”问题的解决
- 解决:错误1 error C2440: “初始化”: 无法从“char *”转换为“ATL::CStringT<BaseType,StringTraits>
- 错误是无法将“XXX”转换为“System.CompenentModel.Design.Serialization.InstanceDescrip”问题的解决办法
- VC++的小问题:const char[]无法转换到LPCWSTR
- mysql数据库中“0000-00-00 00:00:00”格式无法转换成datatime类型的问题解决方法
- error C2440: “=”: 无法从“CString”转换为“LPCWSTR” 解决办法
- 关于OpenOffice转换失败,源文件无法删除问题的解决办法
- 从EXCEL导入文件时无法将DBNull.Value强制转换为类型。。。,请使用可空类型 问题的解决
- 解决GhostScript无法转换中文PDF的问题
- VS2008环境中LPCWSTR类型转换问题解决方法
- 解决iconv函数无法转换某些中文的问题
- visual studio中,cs.lpszName赋值问题(无法从"const char [17]"转换为"LPCWSTR")
- chm文件转换成html文件,解决chm文件无法使用浏览器打开的问题
- 无法从"const char [11]"转换为"LPCWSTR"等问题
- 将中文字符串 由char * 转换为NSString *, 解决乱码问题.
- error C2440: “=”: 无法从“const char [11]”转换为“LPCWSTR”类问题
- “error C2664: “MessageBoxW”: 不能将参数 2 从“char [300]”转换为“LPCWSTR” 1> 与指向的类型无关;转换要求 reinterpret_”问题解决
- “代码生成失败。错误是““LinearBrushConverter”无法将“LinearBrush”转换为“System.CompenentModel.Design.Serialization.InstanceDescrip”。””问题的解决办法