2011-03-03 84 views
0

我刚开始使用vC++ 2008.我只想看到一条消息(对话框)。我已经创建了我的项目作为一个win32项目应用程序。简单的消息框显示在vC++

我写下面的代码,以查看一个MessageBox

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

但我米收到错误

错误C2664: 'MessageBoxW':不能从“常量字符转换参数2 [28] '到'LPCWSTR'

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

回答

3

MessageBoxW以“宽字符串”参数,所以每个字符串前添加一个L

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

ty。这是工作如果我将使用函数“MessageBox”而不是“MessageBoxW”呢? – 2011-03-03 15:17:46

+0

@Ajay_Kumar:'MessageBox'是一个可以解析为'MessageBoxA'或'MessageBoxW'的宏,这取决于你在构建时是否定义了'_UNICODE'。至少根据MS,你应该使用'_T(“string”)',它将以匹配的方式解析为“string”或“L”string“'。 – 2011-03-03 15:54:34

0

杰里已经说明你的编译错误的原因是一个类型不匹配(你有期待宽字符串函数并通过它一个狭窄的字符串)。我建议你不要使用宽或窄特定函数(带有W或A后缀的函数),而是使用非后缀函数(在这种情况下为MessageBox)。 Windows API头文件包含代码,然后根据您的构建设置选择正确的函数版本,也就是说,如果您构建的是Unicode版本的软件。

0

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

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