不能从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经常碰到相关推荐

  1. 不能将参数 2 从“const char *”转换为“LPCWSTR”【转】http://blog.sina.com.cn/s/blog_4a94a0db0100ktxp.html...

    : 不能将参数 2 从"const char *"转换为"LPCWSTR" 在VS2008下使用MFC编程遇到错误:        error C2664: & ...

  2. vs2013 无法将参数 1从“const char *”转换为“LPCWSTR” 解决办法

    LPCWSTR L 后面的P是一个长的指针(以前16位windows时有短的,现在都是长的) P 这是一个指针 C 指向的是const型 W 指向的是宽字符(unicode) STR 这是一个字符串 ...

  3. Qt+vs2017无法将参数1从const char转换为lpcwstr

    错误如图所示: 在属性表-常规-字符集改为多字节字符集即可,如下图所示:

  4. char 类型与lpcwstr_C++中char*转换为LPCWSTR的解决方案

    前言 大家在学习或者使用Windows编程中,经常会碰到字符串之间的转换,char*转LPCWSTR也是其中一个比较常见的转换.下面就列出几种比较常用的转换方法.大家可以根据自己的需求选择相对应的方法 ...

  5. 从“char []”转换为“LPCWSTR” 指向的类型无关

    转自:http://zhidao.baidu.com/link?url=NnGhrj0LAE9WTJl-soYjaRuk2sBHAtXoBZ85KjJpeIE0TS86-CMoqXCPSKslcTW8 ...

  6. c语言LPCTSTR char,c-无法从’const char *’转换为’LPCTSTR’

    LPCTSTR表示(指向恒定TCHAR字符串的长指针). 根据项目设置,TCHAR可以是wchar_t或char. 如果在项目设置的"常规"选项卡中,字符集为"使用多字节 ...

  7. C++ Error C2664:无法将参数 1 从“const char [9]”转换为“LPCWSTR”解决方案

    C++ Error C2664:无法将参数 1 从"const char [9]"转换为"LPCWSTR"解决方案 参考文章: (1)C++ Error C26 ...

  8. VS2010 不能将参数 2 从“char [20]”转换为“LPCWSTR”的错误解决

    1.VS2010报错 1>d:\users\yangtse\documents\visual studio 20010\projects\winmain\winmain\54.cpp(27) : ...

  9. VC2010不能将参数从“CString”转换为“const char *”

    原文地址:http://fengqing888.blog.163.com/blog/static/330114162012016103558408/ 你在vs2010中默认字符集是UNICODE字符集 ...

最新文章

  1. 中国北斗全球系统核心星座将于2019年年底部署完成
  2. python输入名字、输出欢迎你_python笔记3-输出输入、字符串格式化
  3. linux增加epel源,yum安装nignx,脚本安装mysql服务端,shell脚本监控网站页面
  4. 关于表情符号与UTF-8的探讨
  5. win主机上搭建php网站运行环境,Windows server 2008搭建php运行环境图文详解(php5.3)
  6. HBase 中文文档0.97
  7. js 数组与json的转换
  8. SqlServer中如何按姓氏笔画排序
  9. 语言能控制鼠标滑轮吗_家长的“语言暴力”到底有多可怕,孩子能承受的住吗?...
  10. exawear能运行java_VirSCAN.org-多引擎在线病毒扫描网 v1.02,当前支持 47 款杀毒引擎...
  11. cesium--3d-tiles译文[官方]
  12. matlab读取图片value,matlab读取写入图像数据格式uint8,double
  13. 2020年,拥抱不平凡
  14. C++描述 1113. 红与黑
  15. 关于勒索软件的硬道理:我们还没有准备好,这是一场与新规则的斗争,而且它的影响还没有接近顶峰。
  16. windows系统 谷歌浏览器崩溃修复记录
  17. EMM系列1:EMM和ECM状态
  18. Redisson(2-3)分布式锁实现对比 VS Java的ReentrantLock的FairLock
  19. INTERSPEECH 2018 | 语音识别技术之说话人自适应技术
  20. ie默认连接首页没修改

热门文章

  1. elasticsearch删除索引后再新建时踩的坑
  2. vue-cli 搭建的项目处理不同环境下请求不同域名的问题
  3. 为什么鸟哥说 int 再怎么随机也申请不到奇数地址
  4. Linux中的查找命令find、which、whereis
  5. 也来学学插件式开发续-利用MEF
  6. MySQL管理之 MyISAM和InnoDB存储引擎简单对比
  7. C# 判断上传图片是否被PS修改过的方法
  8. 【073】Android 数据存储(SQLite)
  9. 主动模式下FTP的详细工作过程
  10. jxl操作excel样式设置