質問: CreateWindow( szClassNme,//クラス名 "windows test",//タイトルバーに表示 WS_OVERLAPPEDWINDOW,//WS_??? CW_USEDEFAULT,//X座標 CW_USEDEFAULT,//Y座標 CW_USEDEFAULT,//ウィンドウの横幅 CW_USEDEFAULT,//ウィンドウの高さ NULL,//親ウィンドウハンドル(親の場合はNULL) NULL,//メニューハンドル、クラスメニューの時は、NULL hInstance,//インスタンスハンドル NULL//ウィンドウ作成データ ); /*hWnd ウィンドウハンドル nCmdShow ウィンドウの状態を示す ex.SW_SHOW SW_SHOWMAXIMIZED SE_SHOWMINIMIZED SW_HIDE...*/ ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd);//ウィンドウを描きなおせ while (GetMessage(&msg, NULL, 0, 0)) {//送られてくるメッセージを翻訳 TranslateMessage(&msg); DispatchMessage(&msg); } return (msg.wParam); } LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_DESTROY: PostQuitMessage(0); break; case WM_PAINT: ShowMyText(hWnd); break; default: return(DefWindowProc(hWnd, msg, wParam, lParam)); } return (0L); } ``` ### 補足情報(言語/FW/ツール等のバージョンなど) C言語を使っています。
回答: おそらく参考にしている環境が古いので、現在の環境では手直しする必要があります。 1. char型をwchar_t 型に変更 2. (HBRUSH)GetStockObjectのようにキャストする VS 2010ですが、下記の環境で動きました。 ``` #include LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); wchar_t szClassNme[] = L"windows"; void ShowMyText(HWND hWnd) { HDC hdc; PAINTSTRUCT paint; wchar_t *str = L"it is test"; hdc = BeginPaint(hWnd, &paint); TextOut(hdc, 10, 10, (LPCWSTR)str, wcslen(str)); EndPaint(hWnd, &paint); return; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow) { HWND hWnd; MSG msg; WNDCLASS myProg; if (!hPreInst) { myProg.style = CS_HREDRAW | CS_VREDRAW;//水平/垂直のサイズ変更があれば、全体を描きなおす myProg.lpfnWndProc = WndProc;//メッセージの処理を専門に扱う関数 ~Procが一般的 myProg.cbClsExtra = 0;//メモリ領域の追加設定 myProg.cbWndExtra = 0;//同上 myProg.hInstance = hInstance;//インスタンスの登録 myProg.hIcon = NULL;//ウィンドウクラスにアイコン/カーソルを登録 myProg.hCursor = LoadCursor(NULL, IDC_ARROW); myProg.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//背景を登録 myProg.lpszMenuName = NULL;//メニューの名前を登録 myProg.lpszClassName = szClassNme;//クラス名の登録 if (!RegisterClass(&myProg)) { return FALSE; } } hWnd = CreateWindow( szClassNme,//クラス名 L"windows test",//タイトルバーに表示 WS_OVERLAPPEDWINDOW,//WS_??? CW_USEDEFAULT,//X座標 CW_USEDEFAULT,//Y座標 CW_USEDEFAULT,//ウィンドウの横幅 CW_USEDEFAULT,//ウィンドウの高さ NULL,//親ウィンドウハンドル(親の場合はNULL) NULL,//メニューハンドル、クラスメニューの時は、NULL hInstance,//インスタンスハンドル NULL//ウィンドウ作成データ ); /*hWnd ウィンドウハンドル nCmdShow ウィンドウの状態を示す ex.SW_SHOW SW_SHOWMAXIMIZED SE_SHOWMINIMIZED SW_HIDE...*/ ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd);//ウィンドウを描きなおせ while (GetMessage(&msg, NULL, 0, 0)) {//送られてくるメッセージを翻訳 TranslateMessage(&msg); DispatchMessage(&msg); } return (msg.wParam); } LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_DESTROY: PostQuitMessage(0); break; case WM_PAINT: ShowMyText(hWnd); break; default: return(DefWindowProc(hWnd, msg, wParam, lParam)); } return (0L); } ```