1

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

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

我希望你能帮助我。

4

1 回答 1

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();
}
于 2017-10-24T07:31:40.933 回答