WNDCLASS構造体のメンバ

WNDCLASS構造体のメンバがそれぞれどのような意味を持っているかは、次のページに説明が掲載されている。

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

WNDCLASSW構造体メンバ 内容
style UINT。ウィンドウクラススタイルを指定。OR演算で複数指定可能。
lpfnWndProc WNDPROC。ウィンドウプロシージャへのポインタ。先にウィンドウプロシージャを作成しておき、ここでポインタを登録する。実際にウィンドウが表示されてからの動作はこのウィンドウプロシージャで行われる。デフォルト関数としてはDefWindowProc()が用意されている。自前のウィンドウプロシージャで処理を自前で行わないものをDefWindowProc()へ流すといった使い方をする。
cbClsExtra int。確保したウィンドウクラス構造体のあとに何バイト分確保するかを指定。システムは確保した領域をゼロクリアする。
cbWndExtra int。確保したウィンドウインスタンスのあとに何バイト分確保するかを指定。システムは確保した領域をゼロクリアする。
hInstance クラスに対するウィンドウプロシージャを含んだインスタンスをへのハンドラ。
hIcon HICON。クラスアイコンへのハンドラ。NULLの場合にはデフォルトアイコンを使用。
hCursor HCURSOR。クラスカーソルへのハンドラ。NULLを指定した場合には、アプリケーション側でマウスがアプリケーションウィンドウに入ってきたときに明示的にカーソル形状を指定する必要がある。
hbrBackground HBRUSH。クラスバックグラウンドブラシへのハンドラ。背景色などを指定する。色を指定する場合にはスタンダードシステムカラーのうちのどれか一つを指定する必要があり、かつ、値に1を追加したものを使用し、さらにHBRUSHへ変換して指定する必要がある。NULLを指定した場合にはクライアント領域で描画が要求されたときに自分で背景を描画する必要がる。描画の必要性はWM_ERASEBKGNDメッセージを処理するか、BeginPaint関数のPAINTSTRUCT構造体のfEraceメンバーで確認できる。
lpszMenuName LPCTSTR。リソースファイルに表示されるクラスメニューのリソース名。NULLが指定された場合、このクラスに属するウィンドウはデフォルトメニューを持たないことになる。
lpszClassName LPCTSTR。nullで終わる文字列へのポインタ。最大256文字。なるべく一意な文字列になるようにする。

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

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

ウィンドウクラススタイル 内容
CS_BYTEALIGNCLIENT ウィンドウクライアントエリアをバイトバウンダリに揃える(x方向)。ウィンドウの幅および水平方向の配置に影響する。
CS_BYTEALIGNWINDOW ウィンドウをバイトバウンダリに揃える(x方向)。ウィンドウの幅および水平方向の配置に影響する。
CS_CLASSDC クラスのすべてのウィンドウによって共有できる単一のデバイスコンテキストを割り当てる。ウィンドウクラスはプロセスに対して割り当てられるものなので、アプリケーションの複数のうレッドが同じクラスのウィンドウを作成することができる。同時に複数のスレッドが同じデバイスコンテキストを同時に使うことを試みることができる。その場合、システムはひとつのスレッドに対してのみ書き込み処理を成功裏に終わらせる。
CS_DBLCLKS クラスに属しているウィンドウの中でユーザがマウスのダブルクリックを行った場合ウィンドウプロシージャにダブルクリックメッセージを送信する。
CS_DROPSHADOW ウィンドウのドロップシャドー効果を有効化する。通常、この機能はメニューといった短命で小さく、ほかのウィンドウとのZオーダーを強調する目的で使われる。このスタイルのクラスから生成されたウィンドウはトップレベルウィンドウである必要がり、子ウィンドウにはならない。
CS_GLOBALCLASS ウィンドウクラスがアプリケーショングローバルクラスであることを指定。
CS_HREDRAW ウィンドウの移動やウィンドウクライアントエリアの幅が変更された場合にウィンドウ全体を再描画することを指定。
CS_NOCLOSE ウィンドウメニューの「終了」機能を無効化する。
CS_OWNDC クラスのそれぞれのウィンドウにそれぞれユニークなデバイスコンテキストを割り当てる。
CS_SAVEBITS クラスのウィンドウによって隠された部分のイメージをビットマップとして保存する。ウィンドウが削除されると保存されたビットマップを使用して隠されたほかのウィンドウを含む画面イメージを復元する(WM_PAINTメッセージは送信されなくなる)。このスタイルはメニューやダイアログボックスといった一時的に表示され、かつ、ほかの画面の動作が行われる前に削除されるウィンドウをう買う場合に便利。なお、ビットマップを格納うるためにメモリ割当が行われるようになるため、ウィンドウの表示に必要な時間は長くかかるようになる。
CS_VREDRAW ウィンドウの移動やウィンドウクライアントエリアの高さが変更された場合にウィンドウ全体を再描画することを指定。

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

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

内容
IDC_APPSTARTING 矢印と砂時計
IDC_ARROW 矢印
IDC_CROSS 十字
IDC_HAND
IDC_HELP 矢印と?
IDC_IBEAM Iビーム
IDC_NO スラッシュサークル
IDC_SIZEALL 東西南北矢印
IDC_SIZENESW 北東と南西の二重矢印
IDC_SIZENS 南北の二重矢印
IDC_SIZENWSE 北西と南東の二重矢印
IDC_SIZEWE 西と東の二重矢印
IDC_UPARROW 垂直矢印
IDC_WAIT 砂時計