次の方法で共有


ドッキング ツール バーとフローティング ツール バー

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 ファイルを参照してください。

詳しく知りたいこと

こちらも参照ください

MFC ツール バーの実装