C++ 在 MessageDialog 中显示捕获的异常

C++ showing caught exception in MessageDialog

我目前正在学习 C++/CX,使用 Windows 通用应用程序,我想在 MessageDialog 中显示捕获的异常消息,但是,C++/CX 的工作方式我不明白,因为我无法将 char* 转换为 string 类型,这是 MessageDialog 期望的输入类型。

catch (const std::invalid_argument ex)
{
   MessageDialog^ ErrorBox = ref new MessageDialog(ex.what());
   ErrorBox->ShowAsync();
}

希望你能帮帮我。

MessageDialog接受一个Platform::String

Platform::String接受一个char16* s

并且你有一个 char*,所以,你必须找到一种方法将它转换为 char16*,你就是这样做的:

wchar_t buffer[ MAX_BUFFER ];
mbstowcs( buffer, ex.what(), MAX_BUFFER );
platformString = ref new Platform::String( buffer );

这应该有效:

catch (const std::invalid_argument ex)
{
   wchar_t buffer[ MAX_BUFFER ];
   mbstowcs( buffer, ex.what(), MAX_BUFFER );
   platformString = ref new Platform::String( buffer );
   MessageDialog^ ErrorBox = ref new MessageDialog(platformString);
   ErrorBox->ShowAsync();
}