CControlBar Class
コントロール バー クラス CStatusBar、CToolBar、CDialogBar、CReBar、および 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
の詳細については、次を参照してください。
継承階層
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 クラス
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示