- ベストアンサー
C++ WIN32 ウィドウの表示
プログラミング初心者です。 WIN32APIの勉強を始めたばかりの状態です。 本を見ながら、ウィンドウを表示させるだけのプログラムを書いてみたのですが、エラーになってしまいます。 #include <windows.h> //ウィンドウ・クラス名 #define MYWNDCLSNAME "MyWindowClass" LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow) { WNDCLASS wndcls; HWND hWnd; MSG msg; //ウィンドウ・クラスを登録 ZeroMemory(&wndcls, sizeof(wndcls)); wndcls.lpfnWndProc = WndProc; wndcls.hInstance = hInst; wndcls.hIcon = LoadIcon(0, IDI_APPLICATION); wndcls.hCursor = LoadCursor(0, IDC_ARROW); wndcls.hbrBackground = (HBRUSH)COLOR_BACKGROUND; wndcls.lpszClassName = MYWNDCLSNAME; if(RegisterClass(&wndcls) == 0) return -1; //メイン・ウィンドウを作成 hWnd = CreateWindow(MYWNDCLSNAME, "My Window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, hInst, NULL); if(hWnd == 0) return -2; //ウィンドウの表示状態を指定する ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd); //メッセージループ while(GetMessage(&msg, 0, 0, 0)){ DispatchMessage(&msg); } //WM_QUITメッセージのwParamを終了コードにする return msg.wParam; } LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg){ case WM_DESTROY: PostQuitMessage(0); return 0; } //自分で処理しないメッセージはWindowsに任せる return DefWindowProc(hWnd, uMsg, wParam, lParam); } 本を読み直しても原因がよくわかりません。 どこがいけないのかご指摘いただけるとうれしいです。お願いします。 エラーの内容は error C2440: '=' : 'const char [14]' から 'LPCWSTR' に変換できません。 error C2664: 'CreateWindowExW' : 2 番目の引数を 'const char [14]' から 'LPCWSTR' に変換できません。 です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
文字コードがUNICODEだからだと思います。 プロジェクトのプロパティで文字コードをマルチバイトに直してみてください
その他の回答 (3)
- machongola
- ベストアンサー率60% (434/720)
こんにちは。ついでに此れも。 「GetMessage()API」 http://msdn.microsoft.com/ja-jp/library/cc364699.aspx //メッセージループ while(GetMessage(&msg, 0, 0, 0)){ DispatchMessage(&msg); } ↓ //メッセージループ while(::GetMessage(&msg, NULL, 0, 0) == TRUE) { ::TranslateMessage(&msg); ::DispatchMessage(&msg); }
- phoenix343
- ベストアンサー率15% (296/1946)
#3の補足。 要するにWindowsのアプリはUnicode版とANSI版を作成することが出来るのです。 以下を参照 http://www.246.ne.jp/~y-ookubo/program/tips/unicode.html
- Yanch
- ベストアンサー率50% (114/225)
> //ウィンドウ・クラス名 > #define MYWNDCLSNAME "MyWindowClass" を //ウィンドウ・クラス名 #define MYWNDCLSNAME TEXT("MyWindowClass") と直す。 > //メイン・ウィンドウを作成 > hWnd = CreateWindow(MYWNDCLSNAME, "My Window", を //メイン・ウィンドウを作成 hWnd = CreateWindow(MYWNDCLSNAME, TEXT("My Window"), と直す。 で良いと思います。 CreateWindow()の第1引数、第2引数は、LPCTSTR型ですよ。 後、使用している本と、質問兄さんが使用している開発環境のバージョンが違ったりするのがあるのかもしれません。