Window の生成

Windows マシン用の GUI プログラムを C 言語で書く、という勉強を始めたのでその軌跡を残しておきます。

主に 標準 Windows API さんを参考にしています。 今回は 標準 Windows API さんの 1. ~ 8. までの内容を踏まえて、Window Class を登録し、Window を生成するコードを作成しました。

Source Code

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {

    HWND hwnd;
    WNDCLASS winc;

    // Window Class の設定
    winc.style          = CS_HREDRAW | CS_VREDRAW;
    winc.lpfnWndProc    = DefWindowProc;
    winc.cbClsExtra     = winc.cbWndExtra = 0;
    winc.hInstance      = hInstance;
    winc.hIcon          = LoadIcon(NULL, IDI_APPLICATION);
    winc.hCursor        = LoadCursor(NULL, IDC_ARROW);
    winc.hbrBackground  = (HBRUSH) GetStockObject(WHITE_BRUSH);
    winc.lpszMenuName   = NULL;
    winc.lpszClassName  = TEXT("TEST_WINDOW");

    // Window Class の登録
    if(!RegisterClass(&winc)) {
      return 0; // 失敗時終了
    }

    // Window の生成
    hwnd = CreateWindow(
        TEXT("TEST_WINDOW"), TEXT("test window!"), WS_OVERLAPPEDWINDOW,
        100, 100, 200, 200, NULL, NULL, hInstance, NULL
    );
    if(hwnd == NULL){ 
        return 0; // 失敗時終了
    }

    ShowWindow(hwnd, SW_SHOW);
    MessageBox(NULL, TEXT("test window を生成しました. "), TEXT("information"), MB_ICONINFORMATION);

    return 0;

}

Sample

一応 sample の実行ファイルを置いておきます。 ウィルスとかありませんけど怖い人は開けないように。

win32_1.exe

参考サイト


'08.08.02 新規作成.