我正在学习使用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();
}
我希望你能帮助我。
答案 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();
}