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

时间:2017-10-24 07:22:17

标签: win-universal-app c++-cx messagedialog

我正在学习使用Windows Universal App的C ++ / CX,我想在MessageDialog中显示一条捕获的异常消息,但是,C ++ / CX以我不理解的方式工作,因为我无法将char*转换为string类型,这是MessageDialog期望输入的内容。

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

我希望你能帮助我。

1 个答案:

答案 0 :(得分:2)

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();
}