Закрепленные и плавающие панели инструментов
Библиотеки Microsoft Foundation Class поддерживает закрепляемых панелей инструментов. Закрепляемая панели инструментов можно вложить или закрепленного, в любой части родительского окна или ему может быть окончательно удалить; или, в уплыто собственное окно области. В этой статье описывается, как использовать закрепляемых панелей инструментов в приложениях.
При использовании мастера приложений для создания схемы приложения, то будет предложено, чтобы выбрать необходимость закрепляемых панелей инструментов. По умолчанию с помощью мастера приложений создает код, который выполняет 3 необходимого действия, укажите закрепляемую панели инструментов в приложении:
Включение закрепления в окне фреймовом.
Включение закрепления для панели инструментов.
Закрепление панели инструментов (в фреймовому окно).
Если какие-либо из этих шагов отсутствует, приложение будет выводиться панель инструментов. Последние два действия необходимо выполнить для каждой закрепляемой панели инструментов в приложении.
Другие разделы, описанные в этой статье:
Плавать панель инструментов
Динамическое изменение размера панели инструментов
Задание позиции использованих программы-оболочек для панели инструментов фиксированной стиля
В примере MFC DOCKTOOL общий пример.
Включение закрепления в окне фреймовом
Для закрепления панели инструментов в фреймовому фреймовое окно окно (или присвоение) необходимо включить закрепление разрешения. Это делается с помощью функции CFrameWnd::EnableDocking, которая принимает один параметр DWORD, набор отображение бит стиля, сторона фреймового окна поддерживает закрепление. Если панель инструментов будет иметь закрепленным и несколько стороны, что он может быть закрепляется на, стороны, указанные в параметре, передаваемом в EnableDocking используются в следующем порядке: верхний, нижний, левое, вправо. Если требуется возможность закрепление панели элементов управления в любом месте, передайте CBRS_ALIGN_ANY в EnableDocking.
Включение закрепления для панели инструментов
После подготовили назначение для закрепления необходимо подготовить инструментом (источник) или в подобной таким. Вызов CControlBar::EnableDocking для каждой панели инструментов следует закрепить, указывая стороны назначения, у которых должна закрепляться панель инструментов. Если ни одна из сторон, определенных в вызове совпадению CControlBar::EnableDocking разрешенные стороны для закрепления в окне фреймовом, панель инструментов не могут закрепляться ), то они плывут. После того как панель инструментов стала плавающей, она останется плавающей и не сможет закрепляться в фрейме окна.
Если результат требуется панель инструментов полностью с плавающей запятой, вызывает EnableDocking с параметром 0. Затем вызов CFrameWnd::FloatControlBar. Панель инструментов остается с плавающей запятой, постоянно невозможно закрепления в любом месте.
Закрепление панели инструментов
Платформа вызывает функцию CFrameWnd::DockControlBar, когда пользователь пытается удалить панель инструментов на стороне фреймового окна, которое позволяет закрепление.
Кроме того, можно вызвать эту функцию в любое время для закрепления панели элементов управления в фреймовому окно. Это обычно делается во время инициализации. Несколько можно закрепить панель инструментов в конкретной стороне фреймового окна.
Плавать панели инструментов
Окончательное удаление закрепляемая панель инструментов из фреймового окна вызывает плавать панель инструментов. Для этого вызова CFrameWnd::FloatControlBar. Определите панель инструментов, необходимо плыть, точку, в которой он должен поместить и стиль выравнивания, указывает ли панель инструментов с плавающей запятой горизонтальн или вертикален.
Платформа вызывает данную функцию, если пользователь перетаскивает панель инструментов с его состыкованного расположения и удаляет его в место, где закрепление не включен. Это может быть в любом месте внутри или вне фреймового окна. Как и DockControlBar можно также вызвать эту функцию во время инициализации.
Реализация MFC закрепляемых панелей инструментов не предоставляет некоторые используя функций, найденных в некоторых приложениях, поддерживающих закрепляемых панелей инструментов. Пользовательские функции, такие как настраивается инструментов не защищены.
Динамическое изменение размера панели инструментов
Начиная с версии Visual C++ 4.0 C, можно сделать ее возможной для пользователей приложения изменить панели инструментов с плавающей запятой динамически. Обычно в панели инструментов содержит протяженную, линейную фигуры, показанная по горизонтали. Но можно изменить его тип и ориентацию панели инструментов. Например, когда пользователь закрепит инструмент для одной из сторон вертикальных фреймового окна, фигура изменяется на то вертикальный макет. Также можно переформовать панель инструментов в прямоугольник с несколькими строками кнопок.
Можно выполнить следующие действия.
Определите динамический размер как характеристика инструмента.
Как указать размер устраняет характеристика инструмента.
Чтобы обеспечить такую поддержку, существует 2 новых стиля инструмента для использования на вызовах функцию-член CToolBar::Create. К ним относятся:
Панель элементов управления 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 для управления динамический макет панели инструментов. См. файл в EDITBAR.CPP DOCKTOOL.