0

win32 プロジェクトでの視覚化中に、次のようなことをすると、この問題が発生します。

char temp[80]="hello";

その後:

MessageBox(hDlg,(LPCWSTR)temp,_T("titolo"),MB_OK);

結果は日本語の文字ですが、何が問題なのですか? ありがとう。

4

2 に答える 2

3

問題は、 aLPCWSTRがワイド文字配列であり、char配列があることです。

試す:

wchar_t temp[]= L"hello";
于 2012-05-14T13:31:31.720 に答える
1

Luchian が基本的な答えを教えてくれます。

Windows アプリケーションの開発を始めた昔にさかのぼると、Windows の Unicode バージョンがあったことさえ覚えていません。マルチバイト文字列しかありませんでした。Visual C++ ウィザードを使用して新しいアプリケーションを作成すると、基本的な文字列文字が "char" であるアプリが作成されました。ある時点で、Microsoft は Unicode が進むべき道であると予見しTCHAR、 、LPTSTR、および と呼ばれる型を作成しましLPCTSTRた。これらのタイプは、プロジェクトで「UNICODE」を定義したかどうかによって、コンパイル方法が異なります。UNICODE を定義していない場合は、TCHAR= charLPTSTR= LPSTR、およびLPCTSTR=LPCSTRです。ただし、UNICODE を定義した場合は、TCHAR= WCHAR(またはwchar_t)、LPTSTR=LPWSTR、およびLPCTSTR= LPCWSTR.

現在開発中のアプリは UNICODE アプリではなく、MBCS (マルチバイト文字列) です。将来的には、最終的に UNICODE に変更されることを願っています。私が常に試みてきたのはTCHAR、文字列に型を使用することです。これにより、将来的には UNICODE を定義するだけで、すべての文字列機能が機能するようになります。

そうは言っても、TCHARUNICODE を定義したかどうかわからない場合は、関数を使用することもできます。

TCHAR temp[] = _T("hello");

于 2012-05-14T14:31:06.793 に答える