WNDCLASS構造体のhbrBackgroundメンバに指定できるスタイルについては、次のページに説明がまとまっている。

主な内容をまとめると次のようになる。

内容
COLOR_ACTIVECAPTION アクティブウィンドウのタイトルバーの色
COLOR_APPWORKSPACE マルチドキュメントインターフェースアプリケーションの背景色
COLOR_BTNTEXT プッシュボタンテキストの色
COLOR_GRAYTEXT 灰色テキストの色
COLOR_HIGHLIGHT コントロール内で選択された項目の色。
COLOR_HIGHLIGHTTEXT コントロール内で選択された項目のテキストの色。
COLOR_WINDOW ウィンドウの背景の色。前景色はCOLOR_WINDOWTEXT。
COLOR_WINDOWTEXT ウィンドウ内のテキストの色。背景色はCOLOR_WINDOW。

詳しい説明は次回に行うが、こんな感じで基盤となる動作を指定してウィンドウクラスを作成する。これが先程示した次の部分だ。短いようでいて結構な情報が書き込まれている。

ウィンドウクラスの作成部分

    // ウィンドウクラス構造体を用意
    WNDCLASS wc;

    wc.style         = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc   = WindowProc;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = hInstance;
    wc.hIcon         = NULL;
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = CLASS_NAME;

WNDCLASS構造体のメンバを一つ一つ見ていくだけでも、Windowsにおけるウィンドウプログラミングがどのように整理されているのかを推測することができるようになってくる。最初にある程度把握しておきたい構造体だ。

ウィンドウクラスを登録

WNDCLASS構造体のメンバを埋めたら、次のようにRegisterClass()をコールしてWNDCLASS構造体を登録する。

ウィンドウクラスを登録

    // ウィンドウクラス構造体を登録
    RegisterClass(&wc);

まずはここがスタートラインだ。このあとにウィンドウの生成と表示、メッセージ処理ループの構築などを行っていくのだが、まずはその基盤としてWNDCLASS構造体を登録する必要があるのだ。

WNDCLASSには、ウィンドウプログラミングに必要となるかなり基本的な情報を登録することになる。ウィンドウプログラミングの中身を知るために大切な構造体なので、この構造体についてちゃんと理解していくことが大切になってくる。今後、複数回に分けてこの構造体とその動きについて説明を行っていく。

付録

掲載したサンプルソースコードをnmakeでビルドするためのMakefileのサンプルを掲載しておく。

nmake用のMakefile

CMD=    winmain

CC= cl.exe
CFLAGS= /c /source-charset:utf-8

LINK=   link.exe
LIBS=   user32.lib
LFLAGS=

EXIST=  cmd.exe /C if exist

all:    build

build:  $(CMD).exe

$(CMD).exe: $(CMD).obj
    $(LINK) $(LFLAGS) $(LIBS) *.obj
    dir

.c.o:
    $(CC) $(CFLAGS) $*.c

run:    build
    $(CMD).exe

clean:
    $(EXIST) $(CMD).obj del *.obj
    $(EXIST) $(CMD).exe del $(CMD).exe
    dir

参考