Visual c++ 在vc+中显示简单的消息框+;
我刚刚开始使用vc++2008。我只想看到一条消息(对话框)。我已将我的项目创建为win32项目应用程序 我写了下面的代码来查看MessageBoxVisual 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” 这个错误是什么?我需要做什么才能看到一个简单的消息框显
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”
以匹配的方式。