VS2005 MFC MessageBox 消息函数出错
VC++6.0用户在使用VS2005编写WIN32或者MFC程序时,经常使用函数:MessageBox("提示信息。"),但是在VS2005编译时候出错,出错信息如:
void CtestDlg::OnBnClickedButton1()
...{
MessageBox("你已经提交成功。");
// TODO: 在此添加控件通知处理程序代码
}
void CtestDlg::OnBnClickedButton1()
...{
MessageBox(_T"你已经提交成功。");
// TODO: 在此添加控件通知处理程序代码
}
错误 1 error C2664: “CWnd::MessageBoxW”: 不能将参数 1 从“const char [17]”转换为“LPCTSTR” d:/我的文档/visual studio 2005/projects/test/test/testdlg.cpp 155
很多人不知道原因。现在给出这个错误的解决办法。
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
方法一:由于VS2005默认使用的是UNICODE字符集,在新建项目时,把使用UNICODE字符集取消,如下图:
方法二:在使用的函数前加“_T”如:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
如需要更改已经建立的项目字符集,则选择“项目”-》“XXX项目属性”-》“配置属性”-》“常规”选项中,把“字符集”改为“使用多字节字符集”,然后确定。如下图:
OK了。
或者:
<1> Cstring str;
str.Format("a = %d",a);
<2> ::MessageBox(head,_T("content"),_T("tile"),MB_ok);
<3>AfxMessageBox(nstringID,MB_YESNO|MB_ICONSTOP);
<4>CWnd::MessageBox();
<5>MessageBox((LPTSTR)(LPTSTR)str);
上一页
1
...
-1
-1
-1
-1
-1
-1
-1
...
-1
下一页