-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へ
次へ