次の方法で共有


DOCKTOOL サンプル : ドッキング可能ツール バー

更新 : 2007 年 11 月

DOCKTOOL サンプルでは、ドッキング可能ツール バーのサポートを示します。ドッキング可能ツール バーは、親ウィンドウの辺に取り付ける (ドッキングする) ことができます。CMiniFrameWnd を使用して、独自のミニフレーム ウィンドウとしてウィンドウの辺から切り離す (フローティングさせる) ことができます。

texyde9k.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

このサンプル コードは概念を示す目的で提供されているものです。必ずしも最も安全なコーディング手法に従っているわけではないので、アプリケーションまたは Web サイトでは使用しないでください。Microsoft は、サンプル コードが意図しない目的で使用された場合に、付随的または間接的な損害について責任を負いません。

サンプルとそのインストール手順を取得するには

  • Visual Studio で、[ヘルプ] メニューの [サンプル] をクリックします。

    詳細については、「サンプル ファイルの格納場所」を参照してください。

  • 使用できるサンプルの最新バージョンと完全な一覧については、オンラインの Visual Studio 2008 Samples のページを参照してください。

  • サンプルは、コンピュータのハード ディスク上にもあります。既定では、サンプルおよび Readme ファイルは、\Program Files\Visual Studio 9.0\Samples\ の下のフォルダにコピーされます。Visual Studio Express Edition の場合、すべてのサンプルはオンライン上にあります。

サンプルのビルドと実行

DOCKTOOL サンプルをビルドおよび実行するには

  1. ソリューション docktool.sln を開きます。

  2. [ビルド] メニューの [ビルド] をクリックします。

  3. [デバッグ] メニューの [デバッグなしで開始] をクリックします。

ドッキング可能ツール バーのサポート

ドッキング可能ツール バーをアプリケーションに組み込むには、次の 3 つの手順が必要です。

  1. CFrameWnd::EnableDocking 関数を使用して、フレーム ウィンドウ、つまりドッキング先にドッキングできるようにします。関数の DWORD パラメータには、ドッキング先のフレーム ウィンドウの辺を指定します。コントロール バーを辺にドッキングするには、EnableDockingCBRS_ALIGN_ANY を渡します。

  2. ツール バーごとに CControlBar::EnableDocking を呼び出して、ツール バー、つまりドッキング ソースをドッキング可能にします。ツール バーをドッキングする、ドッキング先の辺を指定します。指定した辺が、フレーム ウィンドウのドッキングできる辺と異なる場合、ツール バーはドッキングできず、フローティング状態になります。いったんフローティング状態になると、そのツール バーはフローティング ツール バーのままとなり、フレーム ウィンドウにはドッキングできません。

  3. CFrameWnd::DockControlBar を呼び出して、ツール バーをフレーム ウィンドウにドッキングします。フレーム ウィンドウからドッキング可能ツール バーを切り離すには、CFrameWnd::FloatControlBar を呼び出します。

これらの 3 つの手順を行わないと、アプリケーションには標準のツール バーが表示されます。最後の 2 つの手順は、アプリケーションの各ドッキング可能ツール バーごとに必要です。

アプリケーションを再起動したときにドッキング可能ツール バーの状態 (ドッキングまたはフローティング) を保持するには、CControlBar::SetBarStyle 関数と CControlBar::GetBarStyle 関数を使用して、特定のコントロール バーの設定を取得および復元します。通常、この情報は CFrameWnd::SaveBarState を使用してアプリケーションの .ini ファイルに格納され、CFrameWnd::LoadBarState を使用して取得されます。

キーワード

このサンプルでは、次のキーワードを使用します。

AfxGetApp; CArchive::IsStoring; CComboBox::Create; CComboBox::DeleteString; CComboBox::GetCount; CComboBox::InsertString; CComboBox::SetCurSel; CControlBar::GetBarStyle; CControlBar::SetBarStyle; CDialog::DoModal; CDocument::OnNewDocument; CFrameWnd::Create; CFrameWnd::DockControlBar; CFrameWnd::EnableDocking; CFrameWnd::LoadBarState; CFrameWnd::RecalcLayout; CFrameWnd::SaveBarState; CMenu::GetSubMenu; CMenu::LoadMenu; CMenu::TrackPopupMenu; CObject::AssertValid; CObject::Dump; CObject::Serialize; CRect::OffsetRect; CString::IsEmpty; CToolBar::Create; CToolBar::GetItemRect; CToolBar::LoadBitmap; CToolBar::SetButtonInfo; CToolBar::SetButtons; CView::GetDocument; CView::OnDraw; CWinApp::AddDocTemplate; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWinApp::OnFileNew; CWnd::ClientToScreen; CWnd::DoDataExchange; CWnd::FromHandlePermanent; CWnd::GetParentFrame; CWnd::GetStyle; CWnd::GetWindowPlacement; CWnd::GetWindowRect; CWnd::GetWindowText; CWnd::Invalidate; CWnd::IsZoomed; CWnd::OnClose; CWnd::OnCreate; CWnd::PreTranslateMessage; CWnd::SendMessage; CWnd::SetWindowPlacement; CWnd::SetWindowPos; CWnd::SetWindowText; CWnd::ShowWindow; GetProfileInt; GetProfileString; GetStockObject; HIWORD; LOWORD; LoadBitmap; WriteProfileString; wsprintf

texyde9k.alert_note(ja-jp,VS.90).gifメモ :

このサンプルを含む一部のサンプルには、Visual C++ のウィザード、ライブラリ、およびコンパイラの変更が反映されていませんが、必要なタスクを実行する方法は示されています。

参照

その他の技術情報

MFC サンプル