【问题标题】:simple messagebox display in vc++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”

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

【问题讨论】:

    标签: visual-c++


    【解决方案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);
      

      【讨论】:

        猜你喜欢
        • 2015-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-22
        相关资源
        最近更新 更多