Share via


CControlBar Class

コントロール バー クラス CStatusBar、CToolBar、CDialogBarCReBar、および COleResizeBar の基本クラス。

構文

class CControlBar : public CWnd

メンバー

保護されたコンストラクター

名前 説明
CControlBar::CControlBar CControlBar オブジェクトを構築します。

パブリック メソッド

名前 説明
CControlBar::CalcDynamicLayout 動的コントロール バーのサイズを CSize オブジェクトとして返します。
CControlBar::CalcFixedLayout コントロール バーのサイズを CSize オブジェクトとして返します。
CControlBar::CalcInsideRect 境界線を含むコントロール バー領域の現在のディメンションを返します。
CControlBar::D oペイント コントロール バーの境界線およびグリップをレンダリングします。
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 の詳細については、次を参照してください。

継承階層

CObject

CCmdTarget

CWnd

CControlBar

必要条件

ヘッダー: 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のクラスで独自の動的レイアウトを提供するには、このメンバー関数をオーバーライドします。 CToolbar などの派生 MFC CControlBarクラスは、このメンバー関数をオーバーライドし、独自の実装を提供します。

CControlBar::CalcFixedLayout

コントロール バーの水平サイズを計算するには、このメンバー関数を呼び出します。

virtual CSize CalcFixedLayout(
    BOOL bStretch,
    BOOL bHorz);

パラメーター

bStretch
バーをフレームのサイズまで引き伸ばす必要があるかどうかを示します。 bStretch パラメーターは、バーがドッキング バーでない場合は 0 以外で (ドッキングには使用できません)、ドッキングまたはフローティング (ドッキングに使用できる) 場合は 0 です。

bHorz
バーが水平方向または垂直方向であることを示します。 バーが水平方向の場合は bHorz パラメーターは 0 以外で、垂直方向の場合は 0 です。

戻り値

オブジェクトのコントロール バーの CSize サイズ (ピクセル単位)。

解説

ツールバーなどのコントロール バーは、コントロール バーに含まれるボタンに合わせて水平方向または垂直方向に引き伸ばすことができます。

bStretch が TRUE の場合は、bHorz によって提供される方向に沿って寸法を引き伸ばします。 つまり、bHorz が FAL Standard Edition の場合、コントロール バーは垂直方向に引き伸ばされます。 bStretch が FAL Standard Edition の場合、ストレッチは発生しません。 次の表に、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 oペイント

コントロール バーの境界線とグリッパー バーをレンダリングするためにフレームワークによって呼び出されます。

virtual void DoPaint(CDC* pDC);

パラメーター

pDC
コントロール バーの境界線とグリッパーのレンダリングに使用するデバイス コンテキストをポイントします。

解説

コントロール バーの描画動作をカスタマイズするには、この関数をオーバーライドします。

もう 1 つのカスタマイズ方法は、and DrawGripper 関数をDrawBordersオーバーライドし、罫線とグリッパーのカスタム描画コードを追加することです。 これらのメソッドは既定 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 オブジェクトのメンバーの値は、左側の罫線の幅です。

CControlBar::GetCount

オブジェクトの HWND 以外の項目の数を CControlBar 返します。

int GetCount() const;

戻り値

オブジェクトの HWND 以外の項目の CControlBar 数。 この関数は、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 になります。

ヒープにオブジェクトを割り当て、呼び出deleteす予定がない場合は、CControlBarこの変数を 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 クラス