CControlBar Class
コントロール バー クラスの基底クラス CStatusBar、 CToolBar、 CDialogBar、 CReBar、および COleResizeBar。
構文
class CControlBar : public CWnd
メンバー
保護されたコンストラクター
名前 | 説明 |
---|---|
CControlBar::CControlBar | CControlBar オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
CControlBar::CalcDynamicLayout | 動的コントロール バーのサイズを CSize オブジェクトとして返します。 |
CControlBar::CalcFixedLayout | コントロール バーのサイズを CSize オブジェクトとして返します。 |
CControlBar::CalcInsideRect | 境界線を含むコントロール バー領域の現在のディメンションを返します。 |
CControlBar::D oPaint | コントロール バーの境界線およびグリップをレンダリングします。 |
CControlBar::D rawBorders | コントロール バーの境界線をレンダリングします。 |
CControlBar::D rawGripper | コントロール バーのグリップをレンダリングします。 |
CControlBar::EnableDocking | コントロール バーをドッキングまたはフローティングできるようにします。 |
CControlBar::GetBarStyle | コントロール バーのスタイル設定を取得します。 |
CControlBar::GetBorders | コントロール バーの境界線の値を取得します。 |
CControlBar::GetCount | コントロール バー内の HWND 以外の要素の数を返します。 |
CControlBar::GetDockingFrame | コントロール バーがドッキングされるフレームへのポインターを返します。 |
CControlBar::IsFloating | 対象のコントロール バーがフローティング コントロール バーである場合に、ゼロ以外の値を返します。 |
CControlBar::OnUpdateCmdUI | コマンド UI ハンドラーを呼び出します。 |
CControlBar::SetBarStyle | コントロール バーのスタイル設定を変更します。 |
CControlBar::SetBorders | コントロール バーの境界線の値を設定します。 |
CControlBar::SetInPlaceOwner | コントロール バーのインプレース所有者を変更します。 |
パブリック データ メンバー
名前 | 説明 |
---|---|
CControlBar::m_bAutoDelete | ゼロ以外の場合は、Windows のコントロール バーが破棄されると、CControlBar オブジェクトが削除されます。 |
CControlBar::m_pInPlaceOwner | コントロール バーのインプレース所有者です。 |
解説
通常、コントロール バーは、フレーム ウィンドウの左側または右側にアラインされるウィンドウです。 これには、HWND ベースのコントロール (Windows メッセージを生成して応答するウィンドウ) または HWND ベース以外の項目 (ウィンドウではなく、アプリケーション コードまたはフレームワーク コードによって管理される) が含まれる場合があります。 リスト ボックスと編集コントロールは、HWND ベースのコントロールの例です。ステータス バー ペインとビットマップ ボタンは、HWND ベース以外のコントロールの例です。
通常、コントロール バーのウィンドウは親フレーム ウィンドウの子ウィンドウであり、通常はクライアント ビューまたはフレーム ウィンドウの MDI クライアントの兄弟です。 CControlBar
オブジェクトは、親ウィンドウのクライアント領域の四角形に関する情報を使用して、それ自体を配置します。 次に、親ウィンドウのクライアント領域においてどの程度の未割り当て領域が残っているかについて、親ウィンドウに通知します。
CControlBar
の詳細については、次を参照してください。
継承階層
CControlBar
要件
Header: afxext.h
CControlBar::CalcDynamicLayout
フレームワークは、このメンバー関数を呼び出して、動的ツール バーのディメンションを計算します。
virtual CSize CalcDynamicLayout(
int nLength,
DWORD nMode);
パラメーター
nLength
dwModeに応じて、水平または垂直のコントロール バーの要求されたディメンション。
nMode
次の定義済みのフラグを使用して、動的コントロール バーの高さと幅を決定します。 フラグを結合するには、ビットごとの OR (|
) 演算子を使用します。
レイアウト モード フラグ | 意味 |
---|---|
LM_STRETCH | コントロール バーをフレームのサイズまで拡大するかどうかを示します。 バーがドッキング バーでない場合に設定します (ドッキングには使用できません)。 バーがドッキングまたはフローティング (ドッキング可能) の場合は設定されません。 設定した場合、LM_STRETCHは nLength を無視し、LM_HORZ状態に基づいてディメンションを返します。 LM_STRETCHは、CalcFixedLayout で使用される bStretch パラメーターと同様に動作します。ストレッチと方向の関係の詳細については、そのメンバー関数を参照してください。 |
LM_HORZ | バーが水平方向または垂直方向であることを示します。 横棒が水平方向の場合は設定され、垂直方向の場合は設定されません。 LM_HORZは、CalcFixedLayout で使用される bHorz パラメーターと同様に機能します。ストレッチと方向の関係の詳細については、そのメンバー関数を参照してください。 |
LM_MRUWIDTH | 最近使用した動的幅。 nLength パラメーターを無視し、最近使用した幅を使用します。 |
LM_HORZDOCK | 水平ドッキングされた寸法。 nLength パラメーターを無視し、幅が最も大きい動的サイズを返します。 |
LM_VERTDOCK | 垂直固定寸法。 nLength パラメーターを無視し、最大の高さの動的サイズを返します。 |
LM_LENGTHY | nLength が幅ではなく高さ (Y 方向) を示す場合に設定します。 |
LM_COMMIT | LM_MRUWIDTHをフローティング コントロール バーの現在の幅にリセットします。 |
戻り値
CSize オブジェクトのコントロール バーのサイズ (ピクセル単位)。
解説
このメンバー関数をオーバーライドして、 CControlBar
から派生するクラスで独自の動的レイアウトを提供します。 CControlBar
から派生した MFC クラス (CToolbar など) は、このメンバー関数をオーバーライドし、独自の実装を提供します。
CControlBar::CalcFixedLayout
コントロール バーの水平サイズを計算するには、このメンバー関数を呼び出します。
virtual CSize CalcFixedLayout(
BOOL bStretch,
BOOL bHorz);
パラメーター
bStretch
バーをフレームのサイズまで引き伸ばす必要があるかどうかを示します。 bStretch パラメーターは、バーがドッキング バーでない場合は 0 以外で (ドッキングには使用できません)、ドッキングまたはフローティング (ドッキングに使用できる) 場合は 0 です。
bHorz
バーが水平方向または垂直方向であることを示します。 bHorz パラメーターは、バーが水平方向の場合は 0 以外で、垂直方向の場合は 0 です。
戻り値
CSize
オブジェクトのコントロール バーのサイズ (ピクセル単位)。
解説
ツールバーなどのコントロール バーは、コントロール バーに含まれるボタンに合わせて水平方向または垂直方向に引き伸ばすことができます。
bStretch が TRUE の場合は、bHorz によって提供される方向に沿って寸法を引き伸ばします。 つまり、 bHorz が FALSE の場合、コントロール バーは垂直方向に引き伸ばされます。 bStretch が FALSE の場合、ストレッチは行われません。 次の表は、 bStretch および bHorzの可能な順列と結果のコントロール バー スタイルを示しています。
bStretch | bHorz | 拡張 | オリエンテーション | ドッキング/ドッキングしない |
---|---|---|---|---|
TRUE | TRUE | 水平方向のストレッチ | 水平方向 | ドッキングしない |
TRUE | FALSE | 垂直方向のストレッチ | 垂直方向 | ドッキングしない |
FALSE | TRUE | 使用できるストレッチなし | 水平方向 | ドッキング |
FALSE | FALSE | 使用できるストレッチなし | 垂直方向 | ドッキング |
CControlBar::CalcInsideRect
フレームワークはこの関数を呼び出して、コントロール バーのクライアント領域を計算します。
virtual void CalcInsideRect(
CRect& rect,
BOOL bHorz) const;
パラメーター
rect
コントロール バーの現在の寸法を格納します。罫線を含みます。
bHorz
バーが水平方向または垂直方向であることを示します。 bHorz パラメーターは、バーが水平方向の場合は 0 以外で、垂直方向の場合は 0 です。
解説
この関数は、コントロール バーが描画される前に呼び出されます。
コントロール バーの境界線とグリッパー バーのレンダリングをカスタマイズするには、この関数をオーバーライドします。
CControlBar::CControlBar
CControlBar
オブジェクトを構築します。
CControlBar();
CControlBar::D oPaint
コントロール バーの境界線とグリッパー バーをレンダリングするためにフレームワークによって呼び出されます。
virtual void DoPaint(CDC* pDC);
パラメーター
pDC
コントロール バーの境界線とグリッパーのレンダリングに使用するデバイス コンテキストをポイントします。
解説
コントロール バーの描画動作をカスタマイズするには、この関数をオーバーライドします。
もう 1 つのカスタマイズ方法は、 DrawBorders
関数と DrawGripper
関数をオーバーライドし、罫線とグリッパーのカスタム描画コードを追加することです。 これらのメソッドは既定の DoPaint
メソッドによって呼び出されるため、 DoPaint
のオーバーライドは必要ありません。
CControlBar::D rawBorders
コントロール バーの境界線をレンダリングするためにフレームワークによって呼び出されます。
virtual void DrawBorders(
CDC* pDC,
CRect& rect);
パラメーター
pDC
コントロール バーの境界線のレンダリングに使用するデバイス コンテキストをポイントします。
rect
コントロール バーの寸法を含む CRect
オブジェクト。
解説
コントロール バーの境界線の外観をカスタマイズするには、この関数をオーバーライドします。
CControlBar::D rawGripper
コントロール バーのグリッパーをレンダリングするためにフレームワークによって呼び出されます。
virtual void DrawGripper(
CDC* pDC,
const CRect& rect);
パラメーター
pDC
コントロール バー グリッパーのレンダリングに使用するデバイス コンテキストを指します。
rect
コントロール バー グリッパーの寸法を含む CRect
オブジェクト。
解説
コントロール バー グリッパーの外観をカスタマイズするには、この関数をオーバーライドします。
CControlBar::EnableDocking
コントロール バーをドッキングできるようにするには、この関数を呼び出します。
void EnableDocking(DWORD dwDockStyle);
パラメーター
dwDockStyle
コントロール バーがドッキングをサポートしているかどうか、およびコントロール バーをドッキングできる親ウィンドウの側面 (サポートされている場合) を指定します。 次のいずれかになります。
CBRS_ALIGN_TOP クライアント領域の上部にドッキングできます。
CBRS_ALIGN_BOTTOM クライアント領域の下部にドッキングできます。
CBRS_ALIGN_LEFT クライアント領域の左側にドッキングできます。
CBRS_ALIGN_RIGHT クライアント領域の右側にドッキングできます。
CBRS_ALIGN_ANY クライアント領域の任意の側にドッキングできるようにします。
CBRS_FLOAT_MULTI 複数のコントロール バーを 1 つのミニフレーム ウィンドウに浮動させます。
0 の場合 (つまり、フラグがないことを示します)、コントロール バーはドッキングされません。
解説
指定された辺は、移動先フレーム ウィンドウでドッキングが有効になっている辺のいずれかと一致している必要があります。または、コントロール バーをそのフレーム ウィンドウにドッキングできません。
CControlBar::GetBarStyle
この関数を呼び出して、コントロール バーに対して現在設定されている CBRS_ (コントロール バー スタイル) の設定を決定します。
DWORD GetBarStyle();
戻り値
コントロール バーの現在の CBRS_ (コントロール バー スタイル) の設定。 使用可能なスタイルの完全な一覧については、 CControlBar::SetBarStyle を参照してください。
解説
WS_ (ウィンドウ スタイル) スタイルを処理しません。
CControlBar::GetBorders
コントロール バーの現在の境界線の値を返します。
CRect GetBorders() const;
戻り値
コントロール バー オブジェクトの両側の現在の幅 (ピクセル単位) を含む CRect
オブジェクト。 たとえば、CRect オブジェクトの left メンバーの値は、左罫線の幅です。
CControlBar::GetCount
CControlBar
オブジェクトの HWND 以外の項目の数を返します。
int GetCount() const;
戻り値
CControlBar
オブジェクトの HWND 以外の項目の数。 この関数は、 CDialogBar オブジェクトに対して 0 を返します。
解説
項目の種類は、派生オブジェクト ( CStatusBar のペイン オブジェクト、および CToolBar オブジェクトのボタンと区切り記号によって異なります。
CControlBar::GetDockingFrame
このメンバー関数を呼び出して、コントロール バーがドッキングされている現在のフレーム ウィンドウへのポインターを取得します。
CFrameWnd* GetDockingFrame() const;
戻り値
成功した場合のフレーム ウィンドウへのポインター。それ以外の場合は NULL。
コントロール バーがフレーム ウィンドウにドッキングされていない場合 (つまり、コントロール バーがフローティングの場合)、この関数は親 CMiniFrameWnd へのポインターを返します。
解説
ドッキング可能なコントロール バーの詳細については、「 CControlBar::EnableDocking および CFrameWnd::D ockControlBarを参照してください。
CControlBar::IsFloating
このメンバー関数を呼び出して、コントロール バーが浮動かドッキングされているかを判断します。
BOOL IsFloating() const;
戻り値
コントロール バーが浮動の場合は 0 以外。それ以外の場合は 0。
解説
コントロール バーの状態をドッキングからフローティングに変更するには、 CFrameWnd::FloatControlBar を呼び出します。
CControlBar::m_bAutoDelete
ゼロ以外の場合は、Windows のコントロール バーが破棄されると、CControlBar
オブジェクトが削除されます。
BOOL m_bAutoDelete;
解説
m_bAutoDelete は、BOOL 型のパブリック変数です。
コントロール バー オブジェクトは通常、フレーム ウィンドウ オブジェクトに埋め込まれます。 この場合、フレーム ウィンドウが破棄されると埋め込みコントロール バー オブジェクトが破棄されるため、 m_bAutoDelete は 0 になります。
ヒープに CControlBar
オブジェクトを割り当て、 delete
を呼び出す予定がない場合は、この変数を 0 以外の値に設定します。
CControlBar::m_pInPlaceOwner
コントロール バーのインプレース所有者です。
CWnd* m_pInPlaceOwner;
CControlBar::OnUpdateCmdUI
このメンバー関数は、ツール バーまたはステータス バーの状態を更新するためにフレームワークによって呼び出されます。
virtual void OnUpdateCmdUI(
CFrameWnd* pTarget,
BOOL bDisableIfNoHndler) = 0;
パラメーター
pTarget
アプリケーションのメイン フレーム ウィンドウをポイントします。 このポインターは、更新メッセージのルーティングに使用されます。
bDisableIfNoHndler
更新ハンドラーを持たないコントロールを自動的に無効として表示するかどうかを示すフラグ。
解説
個々のボタンまたはウィンドウを更新するには、メッセージ マップの ON_UPDATE_COMMAND_UI マクロを使用して、更新ハンドラーを適切に設定します。 このマクロの使用方法の詳細については、 ON_UPDATE_COMMAND_UI を参照してください。
OnUpdateCmdUI
は、アプリケーションがアイドル状態のときにフレームワークによって呼び出されます。 更新するフレーム ウィンドウは、少なくとも間接的に表示されるフレーム ウィンドウの子ウィンドウである必要があります。 OnUpdateCmdUI
は高度なオーバーライド可能です。
CControlBar::SetBarStyle
コントロール バーの目的の CBRS_ スタイルを設定するには、この関数を呼び出します。
void SetBarStyle(DWORD dwStyle);
パラメーター
dwStyle
コントロール バーに必要なスタイル。 次のいずれかになります。
CBRS_ALIGN_TOP コントロール バーをフレーム ウィンドウのクライアント領域の上部にドッキングできるようにします。
CBRS_ALIGN_BOTTOM コントロール バーをフレーム ウィンドウのクライアント領域の下部にドッキングできるようにします。
CBRS_ALIGN_LEFT コントロール バーをフレーム ウィンドウのクライアント領域の左側にドッキングできるようにします。
CBRS_ALIGN_RIGHT コントロール バーをフレーム ウィンドウのクライアント領域の右側にドッキングできるようにします。
CBRS_ALIGN_ANY コントロール バーをフレーム ウィンドウのクライアント領域の任意の側にドッキングできるようにします。
CBRS_BORDER_TOP コントロール バーが表示されるときに、コントロール バーの上端に罫線が描画されます。
CBRS_BORDER_BOTTOM コントロール バーが表示されるときに、コントロール バーの下端に罫線が描画されます。
CBRS_BORDER_LEFT コントロール バーが表示されるときに、コントロール バーの左端に罫線が描画されます。
CBRS_BORDER_RIGHT コントロール バーが表示されるときに、コントロール バーの右端に罫線が描画されます。
CBRS_FLOAT_MULTI 複数のコントロール バーを 1 つのミニフレーム ウィンドウに浮動させます。
CBRS_TOOLTIPS コントロール バーのツール ヒントが表示されます。
CBRS_FLYBY ツール ヒントと同時にメッセージ テキストが更新されます。
CBRS_GRIPPER
CReBar
オブジェクト内のバンドで使用されるグリッパーと同様に、CControlBar
派生クラスに対して描画されます。
解説
WS_ (ウィンドウ スタイル) の設定には影響しません。
CControlBar::SetBorders
コントロール バーの境界線のサイズを設定するには、この関数を呼び出します。
void SetBorders(
int cxLeft = 0,
int cyTop = 0,
int cxRight = 0,
int cyBottom = 0);
void SetBorders(LPCRECT lpRect);
パラメーター
cxLeft
コントロール バーの左罫線の幅 (ピクセル単位)。
cyTop
コントロール バーの上罫線の高さ (ピクセル単位)。
cxRight
コントロール バーの右境界線の幅 (ピクセル単位)。
cyBottom
コントロール バーの下罫線の高さ (ピクセル単位)。
lpRect
コントロール バー オブジェクトの各境界線の現在の幅 (ピクセル単位) を含む CRect オブジェクトへのポインター。
例
次のコード例では、コントロール バーの上下の境界線を 5 ピクセルに、左右の境界線を 2 ピクセルに設定します。
CControlBar &m_myControlBar = m_Rebar;
m_myControlBar.SetBorders(2, 5, 2, 5);
CControlBar::SetInPlaceOwner
コントロール バーのインプレース所有者を変更します。
void SetInPlaceOwner(CWnd* pWnd);
パラメーター
pWnd
CWnd
オブジェクトを指すポインターです。
解説
関連項目
MFC サンプル CTRLBARS
CWnd クラス
階層図
CToolBar クラス
CDialogBar クラス
CStatusBar クラス
CReBar クラス