ドッキング ツール バーとフローティング ツール バー
Microsoft Foundation Class ライブラリはドッキングできるツールバーをサポートします。ドッキング可能ツールバーは接続することや、親ウィンドウのあらゆる側。または、をドッキングする)か、独自のミニフレーム ウィンドウでフローティングすることができます。この技術情報では、アプリケーションでドッキング可能ツールバーを使用する方法について説明します。
アプリケーションのスケルトンを生成するためにアプリケーション ウィザードを使用してドッキングできるツールバーを使用するかを選択するように求められます。既定では、アプリケーション ウィザードは、アプリケーションにドッキングできるツールバーを配置するために必要な 3 種類の操作を実行するコードを生成します:
フレーム ウィンドウの有効なドッキング。
ツールバーの有効なドッキング。
ツールバーをドッキングします (フレーム ウィンドウに)。
次の手順のいずれかがない場合、アプリケーションは標準ツールバーを表示します。最後の 2 つの手順は、アプリケーションの各ドッキング可能ツール バーごとに必要です。
この技術情報で説明されている他のトピックでは、次のものが含まれています:
ツールバーをフローティング
動的にツールバーのサイズを変更できます。
修正フォームのツールバーのラップの場所の設定
例については、 " MFC の一般的なサンプル DOCKTOOL を参照してください。
フレーム ウィンドウのドッキングを有効にできます。
フレーム ウィンドウにツールバーをドッキングするために、フレーム ウィンドウ (またはドッキング先を行うことができるように)有効にする必要があります。これは示す一連のスタイル ビットのフレーム ウィンドウのどの側がドッキングを受け入れるを示す DWORD 1 である一つのパラメーターを受け取る CFrameWnd::EnableDocking の関数を使用します。にドッキングできるツールバーがドッキングされる場合は、複数の側がある場合 EnableDocking に渡されるパラメーターで指定されている側は、次の順序で使用されています: 上端、左下権限。任意の場所にコントロール バーをドッキングできるようにする場合は、 EnableDockingに CBRS_ALIGN_ANY を渡します。
ツールバーのドッキングを有効にできます。
ドッキング先のようにを準備すると、ツールバー (ソース)を同じように準備します。、ドッキングする各ツールバーの呼び出し CControlBar::EnableDocking ツールバーがドッキングする必要がある先の側を指定します。CControlBar::EnableDocking の一致にフレーム ウィンドウのドッキングの呼び出しで指定された側でも有効になっている側、ツールバー ドッキングできない場合は、 —フローティング。いったんフローティング状態になると、そのツール バーはフローティング ツール バーのままとなり、フレーム ウィンドウにはドッキングできません。
必要な効果が完全にフローティング ツールバー、ダイヤルすると 0 のパラメーターの EnableDocking を場合。次に、呼び出し CFrameWnd::FloatControlBar。ツールバーは、任意の場所にドッキングすることなく完全にフローティング状態のままです。
ツールバーのドッキング
フレームワークは、ユーザーがそのメモリ割り当てのドッキング フレーム ウィンドウの横にツールバーを削除しようとしたとき CFrameWnd::DockControlBar をダイヤルします。
また、フレーム ウィンドウにコントロール バーをドッキングするには、この関数をいつでもダイヤルできます。これは、初期化中に行われます。複数のツールバーは、フレーム ウィンドウで特定の側にドッキングできます。
ツールバーをフローティング
フレーム ウィンドウでドッキング可能ツールバーをデタッチ ツールバーをフローティング呼び出されます。これを行う呼び出し CFrameWnd::FloatControlBar 。フローティングするツールバーを配置するとフローティング ツールバーは水平または垂直にあるかどうかを判断する配置の形式を指定します。ポイントが。
フレームワークは、ユーザーがドッキングされた場所からツールバーをドラッグし、ドッキングが有効になっていない場所にドロップされたときにこの関数を呼び出しますします。これは、フレーム ウィンドウ内、またはの外部でどこでもかまいません。DockControlBarと同様に、初期化中にこの関数を呼び出しますできます。
ドッキング可能ツールバーの MFC 実装はドッキングできるツールバーをサポートするアプリケーションで見つかった拡張機能の一部を提供しません。カスタマイズ可能なツールバーなどの機能は用意されません。
動的にツールバーのサイズを変更できます。
Visual C++ バージョン 4.0 の時点で、アプリケーションのユーザーがフローティング ツールバーを動的にサイズ変更を有効にできます。通常、ツールバー方向に長い、線形グラフィックスがあります。ただし、ツールバーの方向や形状を変更できます。たとえば、ユーザーがフレーム ウィンドウの垂直側の 1 に対してツールバーをドッキングすると、図形は縦のレイアウトに変更します。ボタンの行を持つ四角形にツールバーを再作成することもできます。
次の操作を行うことができます。
ツールバーの特性として動的サイズ変更を指定します。
予想されるツールバーの特性としてサイズ変更を修正。
このサポートを提供するには、 CToolBar::Create のメンバー関数への呼び出しの使用に関する 2 種類の新しいツールバー スタイルがあります。各要素を次に示します。
CBRS_SIZE_DYNAMIC のコントロール バーは動的です。
CBRS_SIZE_FIXED のコントロール バーを修正。
サイズの動的な形式がフローティング状態間は、ありませんが、ドッキングされたユーザーをツールバーのサイズを変更できるようにします。ツールバーは 「ユーザーのドラッグとして変換する必要が末尾にラップします。
サイズは、フォームの保存と、各列のボタンの位置を修正ツールバーのラップの状態修正。アプリケーションのユーザーはツールバーの形状を変更できません。ボタン間の区切り記号の位置などの指定された位置のツールバーのラップ。これは、ツールバーがフローティングまたはドッキングするかをこのシェイプを保持します。その結果、ボタンの複数の列を含む固定ボックスです。
また、ツールバー ボタンの状態およびフォームを返すために CToolBar::GetButtonStyle を使用できます。ボタンの形式は、ボタンがどのように表示されるか、およびどのようにユーザー入力に応答するかを指定します; 状態は、ボタンがラップされた状態にあるかどうかを示します。
修正フォームのツールバーのラップの場所の設定
サイズによって修正フォームのツールバーの場合、指定のツールバー ボタンのインデックスをツールバー ラップする。次のコードは、メイン フレーム ウィンドウの OnCreate のオーバーライドでこれを行う方法を示します:
// Get the style of the first button separator
UINT nStyle = m_wndToolBar.GetButtonStyle(3);
// Augment the state for wrapping
nStyle |= TBBS_WRAPPED;
m_wndToolBar.SetButtonStyle(3, nStyle);
// Do the same for other wrap locations ...
// Set the bar style to size fixed
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED);
// Call docking/floating functions as needed ...
MFC の一般的なサンプル DOCKTOOL はクラス CControlBar と CToolBar のメンバー関数をツールバーの動的レイアウトを管理する方法を示します。DOCKTOOL ファイル EDITBAR.CPP を参照してください。