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();
}
我目前正在学习 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();
}