不能从const char *转换为LPCWSTR --VS经常碰到
不能从const char *转换为LPCWSTR
在VC 6.0中编译成功的项目在VS2005 vs2005、vs2008、vs2010中常会出现类型错误。
经常出现的错误是:不能从const char *转换为LPCWSTR
如使用MessageBox(hwnd,"TEST",NULL,0)就会报错,如果使用强制转换(LPCWSTR)"TEST",虽然能够通过,但是编码会出错。
可行的办法是使用 _T("TEST")转换,或者TEXT("TEST" )都可以
MessageBox(hwnd,TEXT("TEST"),NULL,0);
MessageBox(hwnd,_T("TEST"),NULL,0);
或者 强制使用ANSI字符 MessageBoxA(hwnd,"TEST",NULL,0);
另一种方法是:项目菜单——项目属性(最后一个)——配置属性——常规——项目默认值——字符集,将使用Unicode字符集改为未设置即可。
什么原因:
因为你的程序在UNICODE(宽字节)字符集下运行,如果调用了 MessageBox ,实际上调用的是 MessageBoxW 函数;
如果你的程序在 ANSI 字符集运行,调用 MessageBox ,就相当于调用 MessageBoxA;
其中 MessageBoxW 支持 UNICODE;MessageBoxA 支持ANSI;
UNICODE与ANSI 有什么区别呢?简单的说,UNICODE版的字符比ANSI 的内存占用大,比如:Win32程式中出现的标准定义 char 占一个字节,
而 char 的UNICODE版被定义成这样:
typedef unsigned short wchar_t ;占2个字节。
所以有字符做参数的函数相应也用两个版本了。
不能从const char *转换为LPCWSTR --VS经常碰到相关推荐
- 不能将参数 2 从“const char *”转换为“LPCWSTR”【转】http://blog.sina.com.cn/s/blog_4a94a0db0100ktxp.html...
: 不能将参数 2 从"const char *"转换为"LPCWSTR" 在VS2008下使用MFC编程遇到错误: error C2664: & ...
- vs2013 无法将参数 1从“const char *”转换为“LPCWSTR” 解决办法
LPCWSTR L 后面的P是一个长的指针(以前16位windows时有短的,现在都是长的) P 这是一个指针 C 指向的是const型 W 指向的是宽字符(unicode) STR 这是一个字符串 ...
- Qt+vs2017无法将参数1从const char转换为lpcwstr
错误如图所示: 在属性表-常规-字符集改为多字节字符集即可,如下图所示:
- char 类型与lpcwstr_C++中char*转换为LPCWSTR的解决方案
前言 大家在学习或者使用Windows编程中,经常会碰到字符串之间的转换,char*转LPCWSTR也是其中一个比较常见的转换.下面就列出几种比较常用的转换方法.大家可以根据自己的需求选择相对应的方法 ...
- 从“char []”转换为“LPCWSTR” 指向的类型无关
转自:http://zhidao.baidu.com/link?url=NnGhrj0LAE9WTJl-soYjaRuk2sBHAtXoBZ85KjJpeIE0TS86-CMoqXCPSKslcTW8 ...
- c语言LPCTSTR char,c-无法从’const char *’转换为’LPCTSTR’
LPCTSTR表示(指向恒定TCHAR字符串的长指针). 根据项目设置,TCHAR可以是wchar_t或char. 如果在项目设置的"常规"选项卡中,字符集为"使用多字节 ...
- C++ Error C2664:无法将参数 1 从“const char [9]”转换为“LPCWSTR”解决方案
C++ Error C2664:无法将参数 1 从"const char [9]"转换为"LPCWSTR"解决方案 参考文章: (1)C++ Error C26 ...
- VS2010 不能将参数 2 从“char [20]”转换为“LPCWSTR”的错误解决
1.VS2010报错 1>d:\users\yangtse\documents\visual studio 20010\projects\winmain\winmain\54.cpp(27) : ...
- VC2010不能将参数从“CString”转换为“const char *”
原文地址:http://fengqing888.blog.163.com/blog/static/330114162012016103558408/ 你在vs2010中默认字符集是UNICODE字符集 ...
最新文章
- 中国北斗全球系统核心星座将于2019年年底部署完成
- python输入名字、输出欢迎你_python笔记3-输出输入、字符串格式化
- linux增加epel源,yum安装nignx,脚本安装mysql服务端,shell脚本监控网站页面
- 关于表情符号与UTF-8的探讨
- win主机上搭建php网站运行环境,Windows server 2008搭建php运行环境图文详解(php5.3)
- HBase 中文文档0.97
- js 数组与json的转换
- SqlServer中如何按姓氏笔画排序
- 语言能控制鼠标滑轮吗_家长的“语言暴力”到底有多可怕,孩子能承受的住吗?...
- exawear能运行java_VirSCAN.org-多引擎在线病毒扫描网 v1.02,当前支持 47 款杀毒引擎...
- cesium--3d-tiles译文[官方]
- matlab读取图片value,matlab读取写入图像数据格式uint8,double
- 2020年,拥抱不平凡
- C++描述 1113. 红与黑
- 关于勒索软件的硬道理:我们还没有准备好,这是一场与新规则的斗争,而且它的影响还没有接近顶峰。
- windows系统 谷歌浏览器崩溃修复记录
- EMM系列1:EMM和ECM状态
- Redisson(2-3)分布式锁实现对比 VS Java的ReentrantLock的FairLock
- INTERSPEECH 2018 | 语音识别技术之说话人自适应技术
- ie默认连接首页没修改