hur.cn - 华软网

 热门搜索

MessageBox(“aaaa”)函数,vc6中对话框能用,到了vc2008中不能用?,

  作者:未知    来源:网络    更新时间:2011/6/27
MessageBox(“aaaa”)函数,vc6中对话框能用,到了vc2008中不能用?
基于对话框的工程,添加一个按钮,写单击事件
以下是vc6的代码,完全正常
C++">
void CDddDlg::OnButton1() 
{
// TODO: Add your control notification handler code here
MessageBox("dddd");
}

但是到了vc2008
就不行了。
提示:

错误 1 error C2660: “MessageBoxW”: 函数不接受 1 个参数 d:\c#temp\as\as\as.cpp 85 as

---华软 网友回答---
MessageBox(_T("dddd"));
要统一标准编码--Unicode编码
---华软网友回复---
楼上正解啊。
---华软网友回复---
要学会看懂错误提示
---华软网友回复---
MessageBox(L"dddd"));就行了
或取消Unicode编码,在VC6.0是没有集合这个宽字符编码的
---华软网友回复---
VS2008默认是Unicode,而VS6.0确实ANSII,提示已经很明确了Unicode版本的MessageBoxW不能使用ANSI作为参数应该改为2楼的,或者L"dddd"
---华软网友回复---
用_T()这个宏
---华软网友回复---
MessageBox(_T("dddd"));
编码方式不一样,vs是Unicode,VC是ANSII,

---华软网友回复---
或者使用MessageBoxA也行
---华软网友回复---
LS说的都不错。
以前我从vc6转到vs2008的时候也被这个问题弄的很郁闷,在unicode编码下字符串前一定要加_T()宏。
后来用vs2010的时候又好了,跟vc6一样用就可以了
---华软网友回复---
引用 8 楼 junkli 的回复:
或者使用MessageBoxA也行

void CasDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码

MessageBox(L"asdfasdf"); //ok
MessageBox(_T("asdfasdf")); //ok
MessageBoxA("dfdfdf"); //error
}
MessageBoxA("dfdfdf"); //error
谢谢,可是第三种写法,为何还是报错呢?

---华软网友回复---
注:我是vc2008
---华软网友回复---
Unicode的原因,可以选择不适用Unicode,也可以这样写MessageBox(_T("dddd"));

---华软网友回复---
就是,一楼的是正解!!!
---华软网友回复---
要统一标准编码--Unicode编码
---华软网友回复---
_T 
---华软网友回复---
建项目时把 unidcode选项去掉
---华软网友回复---
引用 3 楼 lazy_2010 的回复:
要学会看懂错误提示

关键是,这个提示与错误原因是“风牛马不相及”的。
如果提示,能说明问题,我想楼主也就不会来问了。
---华软网友回复---
引用 5 楼 magicfuzzx 的回复:
VS2008默认是Unicode,而VS6.0确实ANSII,提示已经很明确了Unicode版本的MessageBoxW不能使用ANSI作为参数应该改为2楼的,或者L"dddd"

确实如此
---华软网友回复---
引用 17 楼 ok2ok2ok2 的回复:
引用 3 楼 lazy_2010 的回复:
要学会看懂错误提示

关键是,这个提示与错误原因是“风牛马不相及”的。
如果提示,能说明问题,我想楼主也就不会来问了。

MircoSoft的很多提示都是这样啊,哈哈
锻炼一下大家的智慧
---华软网友回复---
可以在开始不选择UNICODE.
---华软网友回复---
UNICODE
---华软网友回复---
messageboxa应该不是类成员函数,需要传入4个参数
 hwnd, lpstr ,lpstr  , style      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。