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
是一个宏,可以解析为MessageBoxA
或MessageBoxW
,具体取决于您在构建时是否定义了_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++中的简单消息框显示的主要内容,如果未能解决你的问题,请参考以下文章
VC中怎么用PostMessage传送一个按钮被按下的消息?怎样用PreTranslateMessage来屏蔽F1消息却不出现帮助框