DOCKTOOL 示例:演示可停靠的工具栏

更新:2007 年 11 月

DOCKTOOL 示例阐释对可停靠工具栏的支持。可停靠工具栏可以被附加或停靠到其父窗口的任何一边,或者可以通过 CMiniFrameWnd 在自己的袖珍框架窗口中被分离或浮动。

安全说明:

提供该示例代码是为了阐释一个概念,并不代表着最安全的编码实践,因此不应在应用程序或网站中使用该示例代码。对于超出本示例代码的预期用途以外的使用所造成的偶然或继发性损失,Microsoft 不承担任何责任。

获取示例和安装示例的说明:

  • 在 Visual Studio 的“帮助”菜单上,单击“示例”。

    有关更多信息,请参见定位示例文件

  • 示例的最新版本和完整列表可以从 Visual Studio 2008 Samples page(Visual Studio 2008 示例页面)联机获取。

  • 还可以在计算机的硬盘上查找示例。默认情况下,示例和自述文件将复制到 \Program Files\Visual Studio 9.0\Samples\ 下的文件夹中。对于 Visual Studio 速成版,所有示例都位于联机位置。

生成并运行示例

生成并运行 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 示例