【发布时间】:2017-04-29 15:20:34
【问题描述】:
看似简单却找不到解决办法。
我想要这样的东西
catch (Exception^ ex)
{
MessageBoxA(NULL, ex->ToString(), "", MB_OK);
}
但它说 Plattform::string ^ 与 LPCSTR 不兼容。
【问题讨论】:
看似简单却找不到解决办法。
我想要这样的东西
catch (Exception^ ex)
{
MessageBoxA(NULL, ex->ToString(), "", MB_OK);
}
但它说 Plattform::string ^ 与 LPCSTR 不兼容。
【问题讨论】:
Platform::String 是.NET 类,当然不兼容旧的char*。
要解决此问题,您需要做两件事。
首先,将Platform::String 转换为wchar_t*,因为它是Unicode 字符串。使用方法Data()
其次,使用 MessageBoxW,因为我们使用的是 unicode,而不是 ANSI。
生成的代码应如下所示:
MessageBoxW(NULL, ex->ToString()->Data(), "", MB_OK);
【讨论】:
"" 传递给MessageBoxW。