Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом документе описываются элементы интерфейса, представленные в Visual Studio 2008 с пакетом обновления 1 (SP1), а также описываются различия с более ранней версией библиотеки.
На следующем рисунке показано приложение, созданное с помощью новых элементов интерфейса.
Закрепление окна
Функциональность докинга окна напоминает докинг окон, как в графическом интерфейсе Visual Studio.
Панели управления теперь называются панелями.
Панели управления теперь называются панелями и производными от класса CBasePane. В более ранних версиях MFC базовый класс панели управления был CControlBar
.
Окно основного кадра приложения обычно представлено классом CFrameWndEx или классом CMDIFrameWndEx. Основной кадр называется сайтом док-станции. Панели могут иметь один из трех типов родителей: сайт док-станции, панель док-станции или окно мини-фрейма.
Существует два типа областей: неизменяемые по размеру и масштабируемые. Изменяемые области, такие как панели состояния и панели инструментов, можно изменять в размере с помощью разделителей или ползунков. Изменяемые области могут формировать контейнеры (одна панель может быть закреплена на другой панели, создавая разделитель между ними). Однако панели с функцией изменения размера нельзя прикреплять (докировать) к док-панелям.
Если ваше приложение использует неизменяемые панели, их необходимо наследовать от класса CPane. Если приложение использует изменяемые области, наследуйте их из класса CDockablePane
Док участок
Сайт док-станции (или главное окно фрейма) владеет всеми панелями и окнами мини-фрейма в приложении. Площадка для стыковки содержит элемент CDockingManager. Этот член поддерживает список всех панелей, принадлежащих сайту док-станции. Список упорядочивается таким образом, чтобы панели, созданные на внешних гранях области дока, были расположены в начале списка. Когда фреймворк перерисовывает док-сайт, он проходит по этому списку и настраивает разметку каждой панели, чтобы включить текущий ограничивающий прямоугольник док-сайта. Вы можете вызывать AdjustDockingLayout
или RecalcLayout
для изменения модульной компоновки, и фреймворк перенаправляет этот вызов в док-менеджер.
Панели док-станции
Каждое окно главной рамки может размещать док-панели вдоль границ. Панель док-станции — это панель, которая принадлежит классу CDockSite. Панели док-станции могут принимать объекты, производные от CPane, например панели инструментов. Чтобы создать док-панели при инициализации главного фрейм-окна, вызовите EnableDocking
. Чтобы включить автоматическое скрытие полос, вызовите EnableAutoHideBars
.
EnableAutoHideBars
создает объекты CAutoHideDockSite и помещает их рядом с каждой панелью док-станции.
Каждая док-панель делится на ряды. Строки панелей докирования представлены классом CDockingPanesRow. Каждая строка док-станции содержит список панелей инструментов. Если пользователь прикрепляет панель инструментов или перемещает панель инструментов из одной строки в другую в той же панели док-станции, платформа создает новую строку и изменяет размер панели док-станции соответствующим образом или помещает панель инструментов в существующую строку.
Мини-окно Windows
Плавающая панель находится в окне мини-фрейма. Окна мини-фрейма представлены двумя классами: класс CMDITabInfo (который может содержать только одну область) и класс CMultiPaneFrameWnd (который может содержать несколько панелей). Чтобы сделать панель плавающей в вашем коде, вызовите CBasePane::FloatPane. После перемещения панели фреймворк автоматически создает окно мини-фрейма, и это окно становится родителем плавающей панели. При закреплении плавающей панели фреймворк сбрасывает родительский элемент, и плавающая панель становится док-панелью (для панелей инструментов) или док-сайтом (для областей с изменением размера).
Разделители панелей
Разделители области (также именованные ползунки или разделители) представлены классом CPaneDivider. Когда пользователь закрепляет панель, фреймворк создает разделители панелей независимо от того, закреплена ли панель в точке закрепления или на другой панели. Когда панель закрепляется на док-сайте, разделитель панели называется разделителем панели по умолчанию. Разделитель по умолчанию отвечает за разметку всех панелей в док-сайте. Диспетчер дока поддерживает список разделителей областей по умолчанию и список панелей. Диспетчеры доков отвечают за макет всех док-панелей.
Контейнеры
Все изменяемые области, когда закреплены друг к другу, поддерживаются в контейнерах. Контейнеры представлены классом CPaneContainer. Каждый контейнер имеет указатели на левую панель, правую панель, левый подконтейнер, правый подконтейнер и разделитель между левой и правой частью. (Слева и справа не ссылаются на физические стороны, а скорее определяют ветви структуры дерева.) Таким образом мы можем создать дерево панелей и разделителей и, следовательно, достичь сложных макетов панелей, которые можно изменять одновременно. Класс CPaneContainer
поддерживает дерево контейнеров; он также поддерживает два списка панелей и ползунков, которые находятся в этом дереве. Менеджеры контейнеров панелей обычно внедрены в стандартные ползунки и мини-окна, содержащие несколько панелей.
Автоматическое скрытие панели управления
По умолчанию каждая CDockablePane
поддерживает функцию автоматического скрытия. Когда пользователь нажимает кнопку "Закрепить" в заголовке CDockablePane
, фреймворк переключает панель в режим скрытия автоматически. Для обработки щелчка платформа создает класс CMFCAutoHideBar и класс CMFCAutoHideButton , связанный CMFCAutoHideBar
с объектом. Платформа помещает новый CMFCAutoHideBar
объект на CAutoHideDockSite. Фреймворк также прикрепляет CMFCAutoHideButton
к панели инструментов.
Класс CDockingManager поддерживает CDockablePane
.
Панели управления с вкладками и панели Outlook
Класс CMFCBaseTabCtrl реализует базовые функции окна с отсоединяемыми вкладками. Чтобы использовать CMFCBaseTabCtrl
объект, инициализируйте класс CBaseTabbedPane в приложении.
CBaseTabbedPane
является производным от CDockablePane
объекта и поддерживает указатель на CMFCBaseTabCtrl
объект. Позволяет CBaseTabbedPane
пользователям закреплять и изменять размер панелей управления с вкладками. Используйте CDockablePane::AttachToTabWnd, чтобы динамически создавать панели управления, закрепленные и вложенные в виде вкладок.
Элемент управления панелью инструментов Outlook также основан на вкладках.
Класс CMFCOutlookBar является производным отCBaseTabbedPane
. Дополнительные сведения об использовании панели Outlook см. в разделе "Класс CMFCOutlookBar".