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
必要条件
ヘッダー: 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 の場合、ストレッチは行われません。 次の表は、 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 つのカスタマイズ方法は、コントロールと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 クラス