無くては始まらないウインドウを作ります。ゲーム作りでは、 これらはほとんど変わることはありません。
#include <windows.h> //定数宣言 #define APP_NAME "sample" //アプリケーション名 #define WINDOW_W 640 //幅 #define WINDOW_H 480 //高さ //プロトタイプ宣言 LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); //ウインドウ関数 LRESULT CALLBACK WindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { HDC hdc; //デバイスコンテキスト PAINTSTRUCT ps; //描画構造体 switch(uMsg) { case WM_DESTROY: //アプリケーションの終了 PostQuitMessage(0); return 0; case WM_KEYDOWN: switch(wParam) { case VK_ESCAPE: PostQuitMessage(0); break; } return 0; case WM_PAINT: //描画開始 hdc = BeginPaint(hWnd,&ps); //描画終了 EndPaint(hWnd, &ps); return 0; } // メインに返す情報 return DefWindowProc(hWnd, uMsg, wParam, lParam); } // メイン関数 int WINAPI WinMain( HINSTANCE hInstance, //インスタンス番号 HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow) { HWND hWnd; //ウインドウハンドル WNDCLASS wc; //ウインドウクラス構造体 MSG msg; //メッセージ //ウインドウクラスの登録 wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WindowProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = NULL; wc.hCursor = NULL; wc.hbrBackground = (HBRUSH)COLOR_BACKGROUND + 1; wc.lpszMenuName = NULL; wc.lpszClassName = APP_NAME; // Windowsに登録 if(!RegisterClass(&wc)) { MessageBox(NULL, "ウインドウクラスの作成に失敗しました", "エラーメッセージ", MB_OK); return 0; } //ウインドウの作成 hWnd = CreateWindow( APP_NAME, "SampleWindow", //ウインドウ名 WS_OVERLAPPEDWINDOW, //ウインドウ設定 CW_USEDEFAULT, //表示位置Y CW_USEDEFAULT, //表示位置X WINDOW_W, //幅 WINDOW_H, //高さ NULL, NULL, hInstance, NULL); if(hWnd == NULL) { MessageBox(NULL, "ウインドウの作成に失敗しました", "エラーメッセージ", MB_OK); return 0; } // ウインドウの表示 ShowWindow(hWnd, SW_SHOW); // メッセージループ while(GetMessage(&msg, NULL, 0, 0) > 0){ DispatchMessage(&msg); } return 0; }