win32 プロジェクトでの視覚化中に、次のようなことをすると、この問題が発生します。
char temp[80]="hello";
その後:
MessageBox(hDlg,(LPCWSTR)temp,_T("titolo"),MB_OK);
結果は日本語の文字ですが、何が問題なのですか? ありがとう。
win32 プロジェクトでの視覚化中に、次のようなことをすると、この問題が発生します。
char temp[80]="hello";
その後:
MessageBox(hDlg,(LPCWSTR)temp,_T("titolo"),MB_OK);
結果は日本語の文字ですが、何が問題なのですか? ありがとう。
問題は、 aLPCWSTRがワイド文字配列であり、char配列があることです。
試す:
wchar_t temp[]= L"hello";
Luchian が基本的な答えを教えてくれます。
Windows アプリケーションの開発を始めた昔にさかのぼると、Windows の Unicode バージョンがあったことさえ覚えていません。マルチバイト文字列しかありませんでした。Visual C++ ウィザードを使用して新しいアプリケーションを作成すると、基本的な文字列文字が "char" であるアプリが作成されました。ある時点で、Microsoft は Unicode が進むべき道であると予見しTCHAR、 、LPTSTR、および と呼ばれる型を作成しましLPCTSTRた。これらのタイプは、プロジェクトで「UNICODE」を定義したかどうかによって、コンパイル方法が異なります。UNICODE を定義していない場合は、TCHAR= char、LPTSTR= LPSTR、およびLPCTSTR=LPCSTRです。ただし、UNICODE を定義した場合は、TCHAR= WCHAR(またはwchar_t)、LPTSTR=LPWSTR、およびLPCTSTR= LPCWSTR.
現在開発中のアプリは UNICODE アプリではなく、MBCS (マルチバイト文字列) です。将来的には、最終的に UNICODE に変更されることを願っています。私が常に試みてきたのはTCHAR、文字列に型を使用することです。これにより、将来的には UNICODE を定義するだけで、すべての文字列機能が機能するようになります。
そうは言っても、TCHARUNICODE を定義したかどうかわからない場合は、関数を使用することもできます。
TCHAR temp[] = _T("hello");