Microsoft Foundation クラス ライブラリでは、ドッキング可能なツール バーがサポートされています。 ドッキング可能なツール バーは、親ウィンドウの任意の側にアタッチまたはドッキングすることも、独自のミニフレーム ウィンドウでデタッチまたはフローティングすることもできます。 この記事では、アプリケーションでドッキング可能なツール バーを使用する方法について説明します。
アプリケーション ウィザードを使用してアプリケーションのスケルトンを生成する場合は、ドッキング可能なツール バーを使用するかどうかを選択するように求められます。 既定では、アプリケーション ウィザードは、ドッキング可能なツール バーをアプリケーションに配置するために必要な 3 つのアクションを実行するコードを生成します。
これらの手順のいずれかが不足している場合は、アプリケーションに標準ツール バーが表示されます。 最後の 2 つの手順は、アプリケーションのドッキング可能なツール バーごとに実行する必要があります。
この記事で取り上げるその他のトピックは次のとおりです。
例については、MFC の一般的なサンプル DOCKTOOL を参照してください。
フレーム ウィンドウでのドッキングの有効化
ツールバーをフレーム ウィンドウにドッキングするには、ドッキングを許可するためにフレーム ウィンドウ (または変換先) を有効にする必要があります。 これは、フレーム ウィンドウのどの側がドッキングを受け入れるかを示すスタイル ビットのセットである 1 つの DWORD パラメーターを受け取る CFrameWnd::EnableDocking 関数を使用して行われます。 ツールバーがドッキングされようとしていて、ドッキング可能な複数の辺がある場合、 EnableDocking
に渡されるパラメーターで示される辺は、上、下、左、右の順序で使用されます。 コントロール バーを任意の場所にドッキングできるようにするには、CBRS_ALIGN_ANYをEnableDocking
に渡します。
ツール バーのドッキングを有効にする
ドッキング先を準備したら、同様の方法でツール バー (またはソース) を準備する必要があります。 ドッキングするツール バーごとに CControlBar::EnableDocking を呼び出し、ツール バーをドッキングする宛先の辺を指定します。 CControlBar::EnableDocking
の呼び出しで指定された辺がフレーム ウィンドウでドッキング可能な辺と一致しない場合、ツールバーはドッキングできません。浮動します。 浮動状態になると、浮動ツールバーのままであり、フレーム ウィンドウにドッキングできません。
目的の効果が永続的に浮動ツールバーである場合は、パラメーター 0 で EnableDocking
を呼び出します。 次に 、CFrameWnd::FloatControlBar を呼び出します。 ツールバーは浮動のままで、どこにも固定できません。
ツール バーをドッキングする
フレームワークは、ユーザーがドッキングを許可するフレーム ウィンドウの側面にツール バーをドロップしようとすると 、CFrameWnd::D ockControlBar を呼び出します。
さらに、いつでもこの関数を呼び出して、コントロール バーをフレーム ウィンドウにドッキングできます。 これは通常、初期化中に行われます。 複数のツールバーをフレーム ウィンドウの特定の側にドッキングできます。
ツール バーの浮動
ドッキング可能なツールバーをフレーム ウィンドウからデタッチすることは、ツールバーの浮動と呼ばれます。 これを行うには 、CFrameWnd::FloatControlBar を呼び出します。 浮動ツールバー、配置する位置、およびフローティング ツールバーが水平か垂直かを決定する配置スタイルを指定します。
フレームワークは、ユーザーがツールバーをドッキングされた場所からドラッグし、ドッキングが有効になっていない場所にドロップすると、この関数を呼び出します。 これは、フレーム ウィンドウの内側または外側の任意の場所にできます。 DockControlBar
と同様に、初期化中にこの関数を呼び出すこともできます。
ドッキング可能なツール バーの MFC 実装では、ドッキング可能なツール バーをサポートする一部のアプリケーションで見つかった拡張機能の一部は提供されません。 カスタマイズ可能なツール バーなどの機能は提供されません。
ツール バーの動的なサイズ変更
Visual C++ バージョン 4.0 以降では、アプリケーションのユーザーがフローティング ツールバーのサイズを動的に変更できるようにすることができます。 通常、ツールバーには長い直線状の図形があり、水平方向に表示されます。 ただし、ツールバーの向きとその形状は変更できます。 たとえば、ユーザーがツールバーをフレーム ウィンドウの垂直面のいずれかにドッキングすると、図形が垂直レイアウトに変わります。 また、複数行のボタンを含む四角形にツール バーの形状を変更することもできます。
次のようにすることができます。
ツール バーの特性として動的サイズ設定を指定します。
ツール バーの特性として固定サイズ設定を指定します。
このサポートを提供するために、 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 ファイルを参照してください。