ウィンドウ表示まで

  今更VC++ > ウィンドウ表示まで

エントリーポイントから呼び出されるユーザー関数の解析

ウィンドウクラスを登録するRegisterClassExW 関数を処理するためのユーザー関数。

//
//  関数: MyRegisterClass()
//
//  目的: ウィンドウ クラスを登録します。
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEXW wcex;

    wcex.cbSize = sizeof(WNDCLASSEX);

    wcex.style          = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WIN32PROJECT3));
    wcex.hCursor        = LoadCursor(nullptr, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName   = MAKEINTRESOURCEW(IDC_WIN32PROJECT3);
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

    return RegisterClassExW(&wcex);
}
		

構造体の意味は以下通り。

メンバ変数名 意味
cbSize UINT この構造体のバイトサイズ
style UNIT 表示するウインドウのスタイルを指定する。
lpfnWndProc WNDPROC ウィンドウプロシージャの関数を設定。
cbClsExtra int
cbWndExtra int
hInstance HINSTANCE wWinMainの引数で受け取ったインスタンスを設定する。
hIcon HICON アプリケーションのアイコンを設定する
hCursor HCURSOR ウィンドウ上にマウスカーソルが移動された場合に表示するマウスカーソルの種類の設定
hbrBackground HBRUSH ウィンドウのクライアント領域の背景色を設定。指定した色に+1して設定するようだ。
lpszMenuName LPCTSTR リソースで指定しているメニューを指定する
lpszClassName LPCTSTR クラス名の文字列の設定
hIconSm HICON アプリケーションの小さいアイコンの指定

次は、ウィンドウを生成して表示を行う。

//
//   関数: InitInstance(HINSTANCE, int)
//
//   目的: インスタンス ハンドルを保存して、メイン ウィンドウを作成します。
//
//   コメント:
//
//        この関数で、グローバル変数でインスタンス ハンドルを保存し、
//        メイン プログラム ウィンドウを作成および表示します。
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   hInst = hInstance; // グローバル変数にインスタンス処理を格納します。

   HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);

   if (!hWnd)
   {
      return FALSE;
   }

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   return TRUE;
}
		

CreateWindowWでウィンドウを生成する。 ShowWindowで、ウィンドウを表示する。第二パラメータはwWinMainで 受け取ったnCmdShowを通常はそのまま渡す。 UpdateWindowで、再描画を要求して表示を正しくする。