- ベストアンサー
Windowsプログラミング
識別子が無効ですといわれて困ってます。一応打ち込んだものを乗せておきます。VisualC++2008でやりました。 // sample01.cpp #include<windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); ATOM InitApp(HINSTACE); BOOL InitInstance(HINSTANCE); TCHAR szClassName[] = TEXT("sample01"); // ウィンドウクラス int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLine, int nCmdShow) { MSG msg; BOOL bRet; if (!InitApp(hCurInst)) return FALSE; if (!InitInstance(hCurInst, nCmdShow)) return FALSE; while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0) { if (bRet == -1) { MessageBox(NULL, TEXT("GetMessageエラー"), TEXT("Error"), MB_OK); break; } else { TranslateMessage(&msg); DispatchMessage(&msg); } } } // ウィンドウクラスの登録 ATOM InitApp(HINSTANCE hInst) { WNDCLASSEX wc; wc.cbSize = sizeof(WNDCLASSEX); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndPrec; // プロシージャ名 wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInst; // インスタンス wc.hIcon = (HICON)LoadImage(NULL, MAKEINTRESOURCE(IDI_APPLICATION), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_SHARED); wc.hCursor = (HCURSOR)LoadImage(NULL, MAKEINTRESOURCE(IDC_ARROW), IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE | LR_SHARED); wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszMenuName = NULL; // メニュー名 wc.lpszClassName = szClassName; wc.hIconSm = (HICON)LoadImage(NULL, MAKEINTRESOURCE(IDI_APPLICATION), IMAGE_ICON 0, 0, LR_DEFAULTSIZE | LR_SHARED); return (RegisterClassEx(&wc)); } // ウィンドウの生成 BOOL InitInstance(HINSTANCE hInst, int nCmdShow) { HWND hWnd; hWnd = CreateWindow(szClassName, // タイトルバーにこの名前が表示されます TEXT("猫でもわかるWindowsプログラミング"), WS_OVERLAPPEDWINDOW, // ウィンドウの種類 CW_USEDEFAULT // x座標 CW_USEDEFAULT // y座標 CW_USEDEFAULT // 幅 CW_USEDEFAULT // 高さ NULL, // 親ウィンドウのハンドル、親を作るときはNULL NULL, // メニューハンドル、クラスメニューを // 使うときはNULL hInst, // インスタントハンドル NULL); if (!hWnd) return FALSE; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE; } // ウィンドウプロシージャ LRESULT CALLBACK WndProc(HWND hWnd, UNIT msg, WPARAM wp, LPARAM lp) { switch (msg) { case WM_DESTROY: PostQuitMessage(0); break; default: return (DefWindowProc(hWnd, msg, wp, lp)); } 長いですがよろしくお願いします。 return 0; }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
これは実際に書かれたものをそのままコピーして張り付けたのですよね BOOL InitInstance(HINSTANCE); は BOOL InitInstance(HINSTANCE, int); wc.lpfnWndProc = WndPrec; // プロシージャ名 は wc.lpfnWndProc = WndProc; // プロシージャ名 wc.hIconSm = (HICON)LoadImage(NULL, MAKEINTRESOURCE(IDI_APPLICATION), IMAGE_ICON 0, 0, LR_DEFAULTSIZE | LR_SHARED); IMAGE_ICONの後に , が抜けてます CW_USEDEFAULT // x座標 CW_USEDEFAULT // y座標 CW_USEDEFAULT // 幅 CW_USEDEFAULT // 高さ ここに全角空白が入って区切りの , が抜けてます。 // ウィンドウプロシージャ LRESULT CALLBACK WndProc(HWND hWnd, UNIT msg, WPARAM wp, LPARAM lp) UNITじゃなくてUINT
その他の回答 (2)
ATOM InitApp(HINSTACE); ↓ ATOM InitApp(HINSTANCE);
補足
あ、すいません。有難うございます。
- SpiralGalaxy
- ベストアンサー率39% (649/1653)
クラシックな方法によるウインドウ生成、懐かしいですね。 #include "resource.h" が無いんですけど、いいのかな?
補足
このプログラムは猫でもわかるWINDOWSプログラミングという本のプログラムの通りに打ったので、良くわからないんです。有難うございます。
お礼
有難うございます。ミスばっかりですいません。全角の空白はOKなんですか?あと、 CW_USEDEFAULT // x座標・・・のところは縦にずらっと並べてはいけないんですよね?