Visual c++ 在vc+中显示简单的消息框+;

Visual c++ 在vc+中显示简单的消息框+;,visual-c++,Visual C++,我刚刚开始使用vc++2008。我只想看到一条消息(对话框)。我已将我的项目创建为win32项目应用程序 我写了下面的代码来查看MessageBox MessageBoxW(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK); 但我有个错误 错误C2664:“MessageBoxW”:无法将参数2从“常量字符[28]”转换为“LPCWSTR” 这个错误是什么?我需要做什么才能看到一个简单的消息框显

我刚刚开始使用vc++2008。我只想看到一条消息(对话框)。我已将我的项目创建为win32项目应用程序

我写了下面的代码来查看MessageBox

MessageBoxW(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK);
但我有个错误

错误C2664:“MessageBoxW”:无法将参数2从“常量字符[28]”转换为“LPCWSTR”


这个错误是什么?我需要做什么才能看到一个简单的消息框显示。

MessageBoxW
接受“宽字符串”参数,因此在每个字符串之前添加一个
L

MessageBoxW(NULL, L"Window Registration Failed!", L"Error!", MB_ICONEXCLAMATION | MB_OK);

MessageBoxW
接受“宽字符串”参数,因此在每个字符串之前添加一个
L

MessageBoxW(NULL, L"Window Registration Failed!", L"Error!", MB_ICONEXCLAMATION | MB_OK);

Jerry已经解释过,编译错误的原因是类型不匹配(您有一个函数需要宽字符串,而传递给它的是窄字符串)。我建议您不要使用宽或窄的特定函数(带有W或后缀的函数),而是使用非后缀函数(在这种特殊情况下为MessageBox)。Windows API头文件包含的代码将根据您的生成设置(即是否生成软件的Unicode版本)选择正确版本的函数。

Jerry已经解释过编译错误的原因是类型不匹配(您有一个需要宽字符串的函数,并且正在向其传递窄字符串)。我建议您不要使用宽或窄的特定函数(带有W或后缀的函数),而是使用非后缀函数(在这种特殊情况下为MessageBox)。Windows API头文件包含的代码将根据您的生成设置(即是否生成软件的Unicode版本)选择正确版本的函数。

您正在为
MessageBoxW
而不是ASCII消息框使用ASCII输入字符串。 请尝试改用以下代码:

 MessageBoxA(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK);

您正在将ASCII输入字符串用于
MessageBoxW
而不是ASCII消息框。 请尝试改用以下代码:

 MessageBoxA(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK);

ty.这正在起作用。如果我使用函数“MessageBox”而不是“MessageBoxW”会怎么样?@Ajay_Kumar:
MessageBox
是一个宏,它解析为
MessageBoxA
MessageBoxW
,这取决于您在构建时是否定义了
\u UNICODE
。至少根据MS的说法,您应该使用
\u T(“字符串”))
使用它,它将以匹配的方式解析为
“string”
L“string”
。如果我使用函数“MessageBox”而不是“MessageBoxW”会怎么样?@Ajay_Kumar:
MessageBox
是一个宏,它可以解析为
MessageBoxA
MessageBoxW
,这取决于您在构建时是否定义了
\u UNICODE
。至少根据微软的说法,您应该对它使用
\u T(“string”)
,这将解析为
“string”
L“string”
以匹配的方式。