CControlBar Class

コントロール バー クラス CStatusBar、CToolBarCDialogBarCReBarおよび 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 の詳細については、次を参照してください。

継承階層

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 が FALSE の場合、コントロール バーは垂直方向に引き伸ばされます。 bStretch が FALSE の場合、ストレッチは行われません。 次の表は、 bStretchbHorz の可能な順列と結果のコントロール バー スタイルを示しています。

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 つのカスタマイズ方法は、コントロールと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 になります。

ヒープにオブジェクトを割り当て 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 クラス