Поделиться через


Образец DOCKTOOL: демонстрация закрепляемых панелей инструментов

Обновлен: Ноябрь 2007

В образце DOCKTOOL показана поддержка закрепляемых панелей инструментов. Закрепляемая панель инструментов может присоединяться (закрепляться) к любой стороне родительского окна или отсоединяться и располагаться в собственном "плавающем" окне области. Для этого используется класс CMiniFrameWnd.

texyde9k.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

Этот образец кода служит для демонстрации основных принципов и не предназначен для использования в приложениях или на веб-узлах, поскольку не может считаться примером наиболее безопасного кода. Корпорация Майкрософт не несет ответственности за случайные или косвенные убытки в случае использования образца кода не по назначению.

Чтобы получить образцы и инструкции по их установке, выполните следующие действия.

  • В меню Справка среды Visual Studio выберите пункт Примеры.

    Дополнительные сведения см. в разделе Поиск файлов примеров.

  • Самая последняя версия и полный список образцов доступны в Интернете на странице образцов Visual Studio 2008.

  • Кроме того, образцы находятся на жестком диске компьютера. По умолчанию образцы кода и файл Readme копируются в папку, находящуюся в папке \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::SetBarStyle и CControlBar::GetBarStyle для извлечения и восстановления параметров нужной панели элементов управления. Обычно эти данные сохраняются в INI-файле приложения с помощью функции CFrameWnd::SaveBarState и извлекаются с помощью функции 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(ru-ru,VS.90).gifПримечание.

Некоторые образцы, включая данный, не модифицировались с учетом изменений в мастерах, библиотеках и компиляторе Visual C++, однако по-прежнему демонстрируют выполнение требуемой задачи.

См. также

Другие ресурсы

Примеры MFC