社区
VC.NET
帖子详情
error C2664: “MessageBoxW”: 不能将参数 2 从“char *”转换为“LPCWSTR”
sadchange
2008-04-12 07:54:48
执行
MessageBox(NULL,Temp,"Application Error",MB_ICONSTOP);
时出现以下错误:
error C2664: “MessageBoxW”: 不能将参数 2 从“char *”转换为“LPCWSTR”
其中定义:
char* Temp=new char[200];
请问怎么改啊?
...全文
1605
3
打赏
收藏
error C2664: “MessageBoxW”: 不能将参数 2 从“char *”转换为“LPCWSTR”
执行 MessageBox(NULL,Temp,"Application Error",MB_ICONSTOP); 时出现以下错误: error C2664: “MessageBoxW”: 不能将参数 2 从“char *”转换为“LPCWSTR” 其中定义: char* Temp=new char[200]; 请问怎么改啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sadchange
2008-04-13
打赏
举报
回复
谢谢大家!
Tannear
2008-04-12
打赏
举报
回复
因为你的程序在UNICODE(宽字节)字符集下运行,如果调用了 MessageBox ,实际上调用的是 MessageBoxW 函数;
如果你的程序在 ANSI 字符集运行,调用 MessageBox ,就相当于调用 MessageBoxA;
其中 MessageBoxW 支持 UNICODE;
MessageBoxA 支持ANSI;
UNICODE与ANSI 有什么区别呢?简单的说,UNICODE版的字符比ANSI 的内存占用大,比如:
Win32程式中出现的标准定义 char 占一个字节,
而 char 的UNICODE版被定义成这样:
typedef unsigned short wchar_t ;占2个字节。
所以有字符做参数的函数相应也用两个版本了。
宽字节版函数中带有字符参数的都应该用宽字节版的字符参数,将字符串转换成宽字节很容易:
比如将 "Application Error" 转换成UNICODE版,只需在它前面使用一个定义了的宏,如下:
L"Application Error" ,或者TEXT("Application Error" )都可以
所以你应将 MessageBox(NULL,Temp,"Application Error",MB_ICONSTOP); 改为:
MessageBox(NULL,Temp,L"Application Error",MB_ICONSTOP);
珍惜生命远离CPP
2008-04-12
打赏
举报
回复
MessageBox(NULL,Temp,"Application Error",MB_ICONSTOP);
改为
MessageBoxA(NULL,Temp,"Application Error",MB_ICONSTOP);
error
C2664
:
MessageBox
W
不能
将
参数
2const
char
*
转换
为L
PC
WSTR
的解决办法
转载自:http://www.lampthneo.com/
error
-
c2664
-
messagebox
w-const-
char
-l
pc
wstr
.html 今天在运行我的第一课Nehe的OpenGL教程的时候,遇到了这么一个很是纠结的问题:
error
C2664
: “
MessageBox
W”:
不能
将
参数
2 从“const
char
[29]”
转换
为“L
PC
WSTR
”,1> 与指向的类型无关
error
C2664
: “
MessageBox
W”:
不能
将
参数
2 从“const
char
[14]”
转换
为“L
PC
WSTR
”
vs2008提示
error
C2664
: “CWnd::
MessageBox
W”:
不能
将
参数
1 从“const
char
[17]”
转换
为“L
PC
TSTR” 在外面用vs2005编写mfc程序的时候经常要
MessageBox
("提示信息")函数,在vc6.0是没有问题的,但是在vs2005却会有下面的提示:
error
C2664
: “CWnd::
MessageBox
W”:
不能
将
参数
...
【已解决】
error
C2664
: “
MessageBox
W”:
不能
将
参数
2 从“const
char
*”
转换
为“L
PC
WSTR
”
出现这种问题不要慌张,只需要换一个
MessageBox
函数就行了。
移植性问题の[windows编程]
error
C2664
: “
MessageBox
W”:
不能
将
参数
2 从“
char
*”转......
执行
MessageBox
(NULL,Temp,"Application
Error
",MB_ICONSTOP); 时出现以下错误:
error
C2664
: “
MessageBox
W”:
不能
将
参数
2 从“
char
*”
转换
为“L
PC
WSTR
” 其中定义:
char
* Temp=new
char
[200]; 请问怎么改啊? 因为你的程序在UNICODE(宽字节)字符集下运行,如果调...
error
C2664
: “
MessageBox
W”:
不能
将
参数
2 从“const
char
*”
转换
为“L
PC
WSTR
”
在vs2005 的win32 application中的编程语句:
MessageBox
( NULL, e.getFullDescription().c_str(), "An exception has occured!", MB_OK | MB_ICON
ERROR
| MB_TASKMODAL);出现如题目所示的错误:
error
C2664
: “
MessageBox
W”:
不能
将
参数
2
VC.NET
7,540
社区成员
27,673
社区内容
发帖
与我相关
我的任务
VC.NET
.NET技术 VC.NET
复制链接
扫一扫
分享
社区描述
.NET技术 VC.NET
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章