Rebar コントロールについて

Rebar コントロールは、子ウィンドウのコンテナとして機能します。 1つ以上のバンドを含めることができ、各バンドにはグリッパー バー、ビットマップ、テキスト ラベル、および 1 つの子ウィンドウを任意に組み合わせることができます。 アプリケーションは、子ウィンドウ (通常は別のコントロール) を Rebar コントロール バンドに割り当てます。 Rebar コントロール バンドの位置を動的に変更すると、Rebar コントロールは、そのバンドに割り当てられた子ウィンドウのサイズと位置を管理します。 また、アプリケーションはバンドの背景ビットマップを指定でき、Rebar コントロールはビットマップ上にバンドの子ウィンドウを表示します。

次のスクリーン ショットは、2 つのバンドを持つ Rebar コントロールを示しています。 1 つはツールバーを含み、もう 1 つはコンボボックスを含みます。 どちらのバンドにもグリッパーがあり、移動やサイズ変更が可能です。

screen shot of dialog box showing a rebar control with a band containing a toolbar and a band containing a combo box

Note

Rebar コントロールは、バージョン 4.70 以降の Comctl32.dll で実装されています。

 

Rebar バンドと子ウィンドウ

アプリケーションは、RB_INSERTBANDRB_SETBANDINFO メッセージを使用して Rebar バンドの特性を定義します。 これらのメッセージは、lParam パラメーターとして、REBARBANDINFO 構造体のアドレスを受け入れます。 REBARBANDINFO 構造体メンバーは、特定のバンドの特性を定義します。 バンドの特性を設定するには、構造体のサイズを バイト単位で示すように cbsize メンバーを設定します。 次に、fMask メンバーを設定して、アプリケーションが入力している構造体メンバーを示します。

子ウィンドウをバンドに割り当てるには、RBBIM_CHILD フラグを、REBARBANDINFO 構造体の fMask メンバーに含め、hwndChild メンバーを子ウィンドウのハンドルに設定します。 アプリケーションでは、cxMinChildcyMinChild メンバーの子ウィンドウの最小の幅と高さを設定できます。

Rebar コントロールが破棄されると、そのコントロール内のバンドに割り当てられている子ウィンドウが破棄されます。 コントロールがバンドに割り当てられている子ウィンドウを破棄しないようにするには、RB_DELETEBAND メッセージを送信してバンドを削除し、RB_SETPARENT メッセージを使用して親を別のウィンドウにリセットしてから、Rebar コントロールを破棄します。

Rebar コントロールのユーザ インタフェース

RBBS_FIXEDSIZE スタイルを使用するものを除き、すべての Rebar コントロール バンドのサイズを変更できます。 コントロール内のバンドのサイズを変更するには、バンドのグリッパー バーをクリックしてドラッグします。 Rebar コントロールは、そのバンドに割り当てられた子ウィンドウのサイズを自動的に変更し、位置を変更します。 さらに、バンド テキストがある場合は、バンド テキストをクリックしてバンドのサイズを切り替えることができます。

Rebar コントロールのイメージ リスト

アプリケーションが Rebar コントロールでイメージ リストを使用している場合は、コントロールにバンドを追加する前に、RB_SETBARINFO メッセージを送信する必要があります。 このメッセージは、lParam パラメーターとして、REBARINFO 構造体のアドレスを承認します。 メッセージを送信する前に、cbSize メンバーをバイト単位で構造体のサイズに設定して REBARINFO 構造体を準備します。 次に、Rebar コントロールがバンド上の画像を表示する場合は、fMask メンバーを RBIM_IMAGELIST フラグに設定し、イメージ リスト ハンドルを himl メンバーに割り当てます。 Rebar がバンド イメージを使用しない場合は、fMask を 0 に設定します。

Rebar コントロール メッセージ転送

Rebar コントロールは、すべての WM_NOTIFY ウィンドウ メッセージを親ウィンドウに転送します。 さらに、Rebar コントロールは、WM_CHARTOITEMWM_COMMAND など、バンドに割り当てられたウィンドウから送信されたすべてのメッセージを転送します。