テクニカル ノート 31: コントロール バー

この MFC コントロール バー クラスについて説明します: 一般CControlBar CStatusBarCToolBarCDialogBarCDockBar

CControlBar

ControlBarCWndです-派生クラス:

コントロール バーの追加のスタイルをサポートします。:

CControlBarから派生したクラスが実装をより興味深い:

Windows すべてコントロール バー オブジェクトの親フレーム ウィンドウの子ウィンドウになります。彼らは通常 (MDI クライアントやビューなど)、フレームのクライアント領域に兄弟として追加されます。コントロール バーの子ウィンドウ ID は重要です。コントロール バーの既定のレイアウトは、Id を持つコントロール バーの範囲のAFX_IDW_CONTROLBAR_FIRST AFX_IDW_CONTROLBAR_LASTにのみ動作します。256 のコントロールの範囲があるのに注意してください、直接、印刷プレビューのアーキテクチャによってサポートされている Id バー、コントロール バーの最初の 32 Id 特別です。

CControlBarクラスの標準の実装を提供します。

C++ コントロール バー オブジェクトはcframewnd クラスのメンバーの派生したクラスと、親のHWNDとオブジェクトが破棄されるときにクリーンアップされます通常は埋め込まれます。コントロール バー オブジェクトはヒープ上に割り当てる必要がある場合は、単にm_bAutoDestructメンバー HWNDが破棄されるとき、コントロール バー「削除」するTRUEに設定することができます。

重要特価;CControlBarあなた自身を作成する場合-の MFC の 1 つを使用するのではなく、派生クラスは、派生クラスは、 CStatusBarCToolBarCDialogBarなど、 m_dwStyleデータ メンバーを設定する必要があります。これは、 Createのオーバーライドで行うことができます。(&N):

 //CMyControlBar CControlBar から派生BOOL CMyControlBar::Create (CWnd ※ pParentWnd、DWORD dwStyle、UINT nID){特価;m_dwStyle = dwStyle;...}(&N)

コントロール バーの配置アルゴリズム

コントロール バーの配置アルゴリズムは非常に簡単です。フレーム ウィンドウは、コントロール バーの範囲のすべての子をWM_SIZEPARENTメッセージを送信します。このメッセージと共に、親のクライアント四角形へのポインターが渡されます。このメッセージは、Z オーダーでの子供たちに送信されます。子コントロール バーは、自分の位置を親のクライアント領域のサイズを小さくこの情報を使用します。メイン クライアント ウィンドウ (通常、MDI クライアント、ビュー、または分割ウィンドウ) を使用して、通常のクライアント エリア (コントロール バー) の残っている最後の四角形。

CWnd::RepositionBarsCFrameWnd::RecalcLayoutの詳細を参照してください。

テクニカル ノート 24 WM_SIZEPARENTを含む MFC プライベート Windows メッセージが記載されています。

CStatusBar

ステータス バーは、テキスト出力ペインの行を持つコントロール バーです。テキスト出力ペインを使用する 2 つの一般的な方法があります。:

ステータス バーのフォントは 10 ポイント「MS (Windows インターフェイス アプリケーション デザイン ガイドまたは 10 ポイント スイス プロポーショナル フォントのフォント マッパー最高の試合を決定) セリフ」です。特定のバージョンの Windows など、日本語版 Windows 4.0 で選択したフォント異なります。

ステータス バーで使用する色も Windows インターフェイス アプリケーション デザイン ガイドの勧告を致します。これらの色がハードコードされていないとコントロール パネルを介してユーザー カスタマイズへの応答を動的に変更します。

項目 Windows カラー値 既定 RGB
ステータス バーの背景 COLOR_BTNFACE RGB (192, 192, 192)
ステータス バーのテキスト COLOR_BTNTEXT RGB (000, 000, 000)
ステータス バーの左上隅のエッジ COLOR_BTNHIGHLIGHT RGB (255, 255, 255)
ステータス バーの右辺と下辺 COLOR_BTNSHADOW RGB (128, 128, 128)

CStatusBar CCmdUI サポート

通常、インジケーターが更新方法ON_UPDATE_COMMAND_UIメカニズムを通じてです。アイドル状態の時間には、ステータス バー、 ON_UPDATE_COMMAND_UIハンドラー インジケーター ペインの文字列 ID を呼び出します。

ON_UPDATE_COMMAND_UIハンドラーを呼び出すことができます。:

クラスCStatusBar CStatusBarの作成とカスタマイズの Api についての詳細については、クラス ライブラリ リファレンスを参照してください。ステータス バー最初表示される前にステータス バーのほとんどのカスタマイズを行う必要があります。

ステータス バーの 1 つだけ伸縮性のあるペイン、通常、最初をサポートしています。そのウィンドウのサイズは、本当に、最小サイズです。ステータス バーは、すべてのペインの最小サイズよりも大きい場合は、任意の余分な幅を伸縮性があるウィンドウに与えられます。最初のペイン伸縮性がある、既定のアプリケーションにはステータス バー右揃え指標キャップ、NUM および SCRL 以来します。

CToolBar

ツールバーの区切り記号を含めることができますビットマップ ボタンの行を持つコントロール バーです。ボタンの 2 つのスタイルがサポート: プッシュ ボタンとチェック ボックス ボタン。チェック ボックス ボタンとON_UPDATE_COMMAND_UIラジオ グループの機能を構築することができます。

ツールバーのビットマップ ボタンをすべて 1 つのビットマップから撮影されています。このビットマップには、1 つの画像または各ボタンのグリフが含まれてする必要があります。通常画像/グリフ ビットマップの順序は、画面に描画される順序です。(これはカスタマイズ用 Api を使用して変更できます。)

各ボタンは同じサイズでなければなりません。既定値は標準の 24 × 22 ピクセルです。各イメージや図形を同じサイズにする必要があり、サイド ・ バイ ・ サイドをする必要があります、ビットマップで。既定のイメージや図形のサイズは 16 × 15 ピクセルです。したがってのツールバー (標準的なサイズを使用して) 10 のボタンでは、高さ 15 ピクセル、幅 160 ピクセルはビットマップを必要。

各ボタンに 1 つと 1 つだけのイメージや図形があります。別のボタンの状態やスタイル (押さなどを無効、中間を無効に) アルゴリズムは、1 つのイメージや図形から生成されます。カラー ビットマップや DIB の理論を使用できます。場合は、元のイメージの灰色の別のボタンを生成するアルゴリズムの作品を最高状態します。標準ツールバーのボタンと MFC サンプルで提供されるツール バー ボタン クリップアートを見て クリップアートの例。

ツールバーで使用する色も Windows インターフェイス アプリケーション デザイン ガイドの推薦で一貫したです。これらの色がハードコードされていないとコントロール パネルを介してユーザー カスタマイズへの応答を動的に変更します。

項目 Windows カラー値 既定 RGB
ツールバーの背景 COLOR_BTNFACE RGB(192,192,192)
ツールバー ボタンの左上隅のエッジ COLOR_BTNHIGHLIGHT RGB(255,255,255)
ツールバー ボタンの右辺と下辺 COLOR_BTNSHADOW RGB(128,128,128)

さらに、標準 Windows ボタン コントロールのようツールバーのビットマップ ボタンが変更されます。この色は、ビットマップ、リソースからの応答の変更に応答して、コントロール パネルを介してユーザー カスタマイズのシステム カラーに読み込まれるときに発生します。注意して使用する必要がありますので次の色で、ツールバーのビットマップを自動的に変更されます。変更をビットマップの一部をあるしたくない場合は、密接にマップの RGB 値の 1 つに近い色を使用します。マッピングは RGB 値に基づいて行われます。

RGB 値 動的に割り当てられた色値
RGB (000, 000, 000) COLOR_BTNTEXT
RGB (128, 128, 128) COLOR_BTNSHADOW
RGB (192, 192, 192) COLOR_BTNFACE
RGB (255, 255, 255) COLOR_BTNHIGHLIGHT

くださいクラスCToolBar クラス ライブラリ リファレンス CToolBarの作成とカスタマイズの Api についての詳細を参照してください。ツールバー最初表示される前にツールバーのカスタマイズを行う必要があります。

Api を使用して、ボタンの Id、スタイル、調整することができますカスタマイズ スペーサー幅とは、イメージや図形がどのボタンに使用されます。既定では、これらの Api を使用する必要はありません。

CToolBar CCmdUI サポート

ツールバーのボタンが常に更新される方法ON_UPDATE_COMMAND_UIメカニズムを通じてです。アイドル状態の時間には、ツールバーの [ ON_UPDATE_COMMAND_UIハンドラーは、ボタンのコマンド ID を呼び出します。ON_UPDATE_COMMAND_UI区切り、呼び出されませんが、プッシュ ボタンとチェック ボックス ボタン用と呼ばれる。

ON_UPDATE_COMMAND_UIハンドラーを呼び出すことができます。:

チェック ボックス ボタンは「自動」チェック ボックス ボタンです。それらを押すと状態はすぐに変更されます。チェック、またはうつ状態です。組み込みのユーザー インターフェイスは、ボタンは「中間」状態に変更方法がない;コードを通じて行う必要があります。

カスタマイズ用 Api 指定されたツール バー ボタンの状態を変更することを許可する、できれば、これらの状態で、ツールバーのボタンを表すコマンドのON_UPDATE_COMMAND_UIハンドラーを変更する必要があります。アイドル状態の処理が SetButtonStyle をしたこれらの状態の変更後迷子になることがありますのでON_UPDATE_COMMAND_UIハンドラーをツール バー ボタンの状態変更を覚えてアイドル。

ツールバーのボタンは、 WM_COMMANDメッセージ通常のボタンまたはメニュー項目のように、通常、 ON_COMMANDハンドラー ON_UPDATE_COMMAND_UIハンドラーを提供する同じクラス内で処理される送信されます。

表示状態に使用 4 つのツールバー ボタンのスタイル (TBBS_ 値):

六つの公式 Windows インターフェイス アプリケーション デザイン ガイド ボタンのスタイルは、次の促進剤 TBBS 値で表されます:

CDialogBar

ダイアログ バーは、標準の Windows コントロールを含むコントロール バーです。コントロールが含まれていて、それらの間のタブ移動をサポートしていることのようなダイアログ ボックスとして機能します。ダイアログ テンプレートを使用して、バーを表すものようなダイアログ ボックス機能します。

CDialogBarは標準のプッシュ ボタン コントロールが含まれている印刷プレビュー ツールバーの使用します。

CDialogBarを使用して、 CFormViewを使用してのようです。ダイアログ バーのダイアログ テンプレートを定義し、 WS_CHILD以外のすべてのスタイルを削除する必要があります。ダイアログ ボックスを表示にしなければならないことに注意してください。

CDialogBarに対するコントロール通知 (同じようにツールバーのボタン) のコントロール バーの親に送信されます。

CDialogBar CCmdUI サポート

ダイアログ バー ボタンON_UPDATE_COMMAND_UIハンドラー メカニズムを更新する必要があります。アイドル状態の時に、ダイアログ バー ON_UPDATE_COMMAND_UIハンドラー ID gt; を持つすべてのボタンのコマンド ID を呼び出します = 0x8000 (つまり、コマンド Id の範囲で)(&G)。

ON_UPDATE_COMMAND_UIハンドラーを呼び出すことができます。:

カスタマイズは標準ウィンドウ マネージャー Api を通じて行うことができます。

番号順テクニカル ノート|nbsp;カテゴリ別テクニカル ノート(&N)

Index