Unicode文字とマルチバイト文字についてです #include <windows.h> #include <windowsx.h> int __stdcall WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) { MessageBox(NULL,"Hello World","Msg Box",MB_OK); return 0; } おそらく error C2664: 'MessageBoxW' : 2 番目の引数を 'const char [12]' から 'LPCWSTR' に変換できません。 というエラーが出るはずです まずLPCWSTRって何よ?って話からです 1文字を格納するのにいままで使っていたchar型は1バイトでした LPCWSTRを正式な書き方(?)で書くと const wchar_t* となります で、さっきのエラーをもう一度みてみると 実はWin32APIは文字コードの設定で #ifdef UNICODE #define MessageBox MessageBoxW #else #define MessageBox MessageBoxA #endif // !UNICODE のように内部で 文字コードの設定は を、次のように変更すると1文字をchar型として従来通り使えますが・・・ 個人的には、tchar.hをインクルードして というのは、マルチバイト文字だと対応してない関数なども存在するからです #include <tchar.h>// マルチバイト文字とUnicode文字、相互互換文字列関数のヘッダー #include <windows.h> #include <windowsx.h> int __stdcall WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) { MessageBox(NULL,_T("Hello World"),_T("Msg Box"),MB_OK); return 0; }
|