2016-12-14 6 views
-1

シンプルだが解決策が見つからない。メッセージボックスのC++例外メッセージ

私はこの

catch (Exception^ ex) 
{ 
    MessageBoxA(NULL, ex->ToString(), "", MB_OK); 
} 

のような何かをしたい。しかし、それはPlattform :: stringはLPCSTRと互換性がありません^言います。

答えて

-1

Platform :: Stringは.NETクラスです。これはもちろん、古いバージョンのchar*と互換性がありません。

これを修正するには2つのことが必要です。

最初に、ユニコード文字列であるため、Platform::Stringwchar_t*に変換してください。使用方法Data()

次に、ANSIではなくユニコードで作業しているので、MessageBoxWを使用してください。

結果のコードは次のようになります。

MessageBoxW(NULL, ex->ToString()->Data(), "", MB_OK); 
+0

おかげで、これは働いていました。 (MessageBoxW(NULL、ex-> ToString() - > Data()、NULL、MB_OK);を使用してください) – Johannes

+1

このQ + Aでは、何かがひどく間違っていました。 .NETクラス。 WinRTタイプのHSTRINGの言語投影です。体内の管理された骨ではありません。 WinRTをターゲットとするアプリケーションでMessageBox()を使用すると、Windows :: UI :: Popups :: MessageDialogが代わりに使用されます。 –

+0

大したことではありません(@HansPassantはすでに指摘しているように、**これは答えではありません)。しかし、 '' ''を '' MessageBoxW''に渡すことはできません。 – IInspectable