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 | 砂時計 |