DOCKTOOL 範例:示範可停駐工具列

更新:2007 年 11 月

DOCKTOOL 範例將示範可停駐工具列 (Dockable Toolbar) 支援。可停駐工具列可以貼附或停駐在父視窗的任何一邊,或者可以使用 CMiniFrameWnd 自小型框架視窗分離,或在小型框架視窗上浮動。

安全性注意事項:

這個程式碼範例僅供概念說明之用,同時因為範例中的程式碼撰寫並沒有周全的顧及所有安全性問題,所以本範例不適用於實際執行的應用程式或網站中。如果使用者擅自將範例程式碼用於其他意圖而導致連帶事件或重大損害時,Microsoft 將不承擔任何責任。

若要取得範例和指示以便進行安裝:

  • 按一下 Visual Studio [說明] 功能表上的 [範例]。

    如需詳細資訊,請參閱尋找範例檔案

  • 最新版的完整範例清單可從 Visual Studio 2008 範例網頁 (英文) 取得。

  • 您也可以將範例置於電腦硬碟中。根據預設,範例和讀我檔案都會複製到 \Program Files\Visual Studio 9.0\Samples\ 下的資料夾中。對於所有的 Visual Studio Express 版,所有範例都可在線上找到。

建置和執行範例

若要建置並執行 DOCKTOOL 範例

  1. 開啟 docktool.sln 方案。

  2. 在 [建置] 功能表上,按一下 [建置]。

  3. 在 [偵錯] 功能表上,按一下 [啟動但不偵錯]。

支援可停駐工具列

下列是將可停駐工具列置於應用程式中的三個必要步驟:

  1. 使用 CFrameWnd::EnableDocking 函式,啟用框架視窗或目的地的停駐。一個 DWORD 參數會指出框架視窗的哪一邊接受停駐。若要將控制列停駐在任何位置,請將 CBRS_ALIGN_ANY 傳遞給 EnableDocking

  2. 藉由為每個工具列呼叫 CControlBar::EnableDocking,啟用工具列或來源的停駐。指定工具列要停駐的目的邊。如果指定目的邊中沒有一個邊和框架視窗中已啟用停駐的邊相符,就無法停駐工具列,它將會浮動。一旦浮動的話,工具列將永遠是浮動狀態,無法停駐在框架視窗上。

  3. 藉由呼叫 CFrameWnd::DockControlBar,將工具列停駐到框架視窗。反之,如果呼叫 CFrameWnd::FloatControlBar,就可以將可停駐工具列從框架視窗中分離。

如果您沒有完成全部的三個步驟,應用程式將會顯示標準工具列。您一定要替程式中每一個可停駐工具列執行後兩個步驟。

若要在應用程式引動過程之間保留可停駐工具列的狀態 (無論是停駐或浮動狀態),請使用 CControlBar::SetBarStyleCControlBar::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

注意事項:

部分範例 (包括本範例) 尚未經過改寫,無法反映出目前在 Visual C++ 精靈、程式庫以及編譯器方面的變更,不過還是可以示範如何完成您要進行的工作。

請參閱

其他資源

MFC 範例