vc++中的简单消息框显示

Posted

技术标签:

【中文标题】vc++中的简单消息框显示【英文标题】:simple messagebox display in vc++ 【发布时间】:2011-03-03 15:10:20 【问题描述】:

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

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

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

但我遇到了错误

错误 C2664:“MessageBoxW”:无法将参数 2 从“const char [28]”转换为“LPCWSTR”

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

泰。如果我将使用函数“MessageBox”而不是“MessageBoxW”,这是可行的吗? @Ajay_Kumar:MessageBox 是一个宏,可以解析为MessageBoxAMessageBoxW,具体取决于您在构建时是否定义了_UNICODE。至少根据 MS 的说法,你应该使用 _T("string") ,它会以匹配的方式解析为 "string"L"string"【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

以上是关于vc++中的简单消息框显示的主要内容,如果未能解决你的问题,请参考以下文章

ASP页面即时提示消息框代码

消息框不显示

WPF 自定义消息框

修复包含错误的单元格时,消息框一直显示

Winform消息框中的可点击URL?

VC中怎么用PostMessage传送一个按钮被按下的消息?怎样用PreTranslateMessage来屏蔽F1消息却不出现帮助框