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


Элементы интерфейса

В этом документе описываются элементы интерфейса, представленные в Visual Studio 2008 с пакетом обновления 1 (SP1), а также описываются различия с более ранней версией библиотеки.

На следующем рисунке показано приложение, созданное с помощью новых элементов интерфейса.

Пример приложения пакета дополнительных компонентов MFC.

Закрепление окна

Функциональность докинга окна напоминает докинг окон, как в графическом интерфейсе 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".

См. также

Основные понятия