Exception c++;messagebox中的异常消息

Exception c++;messagebox中的异常消息,exception,c++-cx,Exception,C++ Cx,看起来很简单,但找不到解决方案 我想要这样的东西 catch (Exception^ ex) { MessageBoxA(NULL, ex->ToString(), "", MB_OK); } 但是它说Plattform::string^与LPCSTR不兼容 Platform::String是.NET类,它当然与良好的旧char*不兼容 要解决这个问题,你需要做两件事 首先,将Platform::String转换为wchar\u t*,因为它是unicode字符串。使用方法 其

看起来很简单,但找不到解决方案

我想要这样的东西

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

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

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

要解决这个问题,你需要做两件事

首先,将
Platform::String
转换为
wchar\u t*
,因为它是unicode字符串。使用方法

其次,使用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