【问题标题】:c++ exception message in messagebox消息框中的c ++异常消息
【发布时间】:2017-04-29 15:20:34
【问题描述】:

看似简单却找不到解决办法。

我想要这样的东西

catch (Exception^ ex)
{
    MessageBoxA(NULL, ex->ToString(),  "", MB_OK);
}

但它说 Plattform::string ^ 与 LPCSTR 不兼容。

【问题讨论】:

    标签: exception c++-cx


    【解决方案1】:

    Platform::String 是.NET 类,当然不兼容旧的char*

    要解决此问题,您需要做两件事。

    首先,将Platform::String 转换为wchar_t*,因为它是Unicode 字符串。使用方法Data()

    其次,使用 MessageBoxW,因为我们使用的是 unicode,而不是 ANSI。

    生成的代码应如下所示:

    MessageBoxW(NULL, ex->ToString()->Data(),  "", MB_OK);
    

    【讨论】:

    • 感谢这工作。 (使用 MessageBoxW(NULL, ex->ToString()->Data(), NULL, MB_OK); 准确地说)
    • 这个 Q+A 出现了严重错误,Platform::String 不是 .NET 类。它是 HSTRING(WinRT 类型)的语言投影。它的身体里没有一块受过管理的骨头。在以 WinRT 为目标的应用程序中使用 MessageBox() 是错误的,请改用 Windows::UI::Popups::MessageDialog。
    • 这并不重要(正如@HansPassant 已经指出的那样,这不是答案),但您也不能将"" 传递给MessageBoxW
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 2010-12-15
    相关资源
    最近更新 更多