-006- ウィンドウクラスって何のこと?
前へ TOPへ 次へ

ウィンドウクラスとは、ウィンドウの雛形(テンプレート)のようなもので、 対応するウィンドウ関数・アイコン・カーソル・背景色など 基本的な情報が登録されている。 ウィンドウを作成する手順は、まずこのウィンドウクラスを1つ登録しておいて、それからそのクラスの属性を持った実体のウィンドウを、CreateWindow関数を使って作成することになる。 一つのウィンドウクラスから複数のウィンドウを作成することも可能である。 ウィンドウを作成する場合は前もってウィンドウクラスを登録しなければいけない。 ウィンドウクラスの定義は具体的にはRegisterClassEx関数を使用する。

ウィンドウクラスは文字列で識別される。 あらかじめ登録されているウィンドウクラスとしては"BUTTON", "COMBOBOX", "EDIT", "LISTBOX", "MDICLIENT", "RichEdit", "RICHEDIT_CLASS", "SCROLLBAR", "STATIC"がある。 これらは登録済みで個別用途のウィンドウクラスであるため(例えばボタンウィンドウやエディットボックスなど)、下記のRegisterClassEx関数を利用する必要なしにウィンドウ作成可能である。

すなわち、プログラマが新しくウィンドウやボタンといったコントロールを作る場合、 ウィンドウクラスを登録すれば良い。 登録の手順は、まずWNDCLASSEXという構造体の変数(例えばwcという変数名)を用意し、次にこの中に適切なパラメータ値を入れ、 RegisterClassExというAPIに渡す、というものである。 WNDCLASS構造体を使うRegisterClassというAPIもあるが、 マイクロソフト社自身がRegisterClassExの利用を推奨している。

cbSize
構造体のサイズを入れる。通常sizeof(WNDCLASSEX)とする。
style
CS_で始まる定数のフラグの組み合わせ。 ほとんどの場合、CS_HREDRAW|CS_VREDRAWを入れれば良い。
lpfnWndProc
ウィンドウ関数名(ウィンドウプロシージャ名)を指定する。
cbClsExtra
構造体が使用する「余分な(extra)」メモリのサイズを指定する。 通常は0にしておく。
cbWndExtra
ウィンドウが使用する「余分な(extra)」メモリのサイズ。 これも0にしておく。
hInstance
ウィンドウ関数を所有しているモジュールのインスタンスハンドルを指定。 WinMainの第一引数を使用する。
hIcon
アイコンリソースへのハンドルを指定。 NULLにするとコンソールアプリのアイコンを使用する。
hCursor
カーソルリソースへのハンドルを指定。 NULLにすると、マウスカーソルがウィンドウの中に移動したときに 常に明示的にカーソルをセットしなければならない。
hbrBackground
ウィンドウの背景色をブラシ色(後述)で指定。 CreateBrushとかCreateSolidBrushの戻り値も使えるが、 システムカラーの定数(COLOR_WINDOWなど)も使える。 それに1を足してHBRUSHにキャストすると言う方法である。 指定したブラシは、クラスがフリー(free)になったときに システムが自動的に削除するので、アプリケーション側では削除しない。
lpszMenuName
メニューリソースを示すNULLで終わる文字列か、 リソースの識別子をMAKEINTRESOURCEマクロを使って指定する。
lpszClassName
作成するウィンドウクラスの名前を文字列で指定する。 通常は、アプリケーション名を指定する。
hIconSm
アプリケーションと関連( associate)するスモールアイコンを指定する。 NULLにするとhIconを無理矢理縮めたものを使う。構造体に値を一通り入れたら、RegisterClassEx関数を呼ぶ。

API関数


前へ TOPへ 次へ