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


Контейнеры активных документов

Контейнер активных документов, например Microsoft Office Binder или Internet Explorer, позволяет работать с несколькими документов типов приложений в одном кадр (вместо реализации, создание и использование нескольких кадры приложения для каждого типа документа).

MFC предоставляет полную поддержку контейнеров активных документов в классе COleDocObjectItem. С помощью мастера приложений MFC создание контейнера активных документов, установив флажок Контейнер активных документов на странице Поддержка составн. док-тов мастера приложений MFC. Дополнительные сведения см. в разделе Создание приложения контейнера активных документов.

Контейнеров активных документов Дополнительные сведения о см. в разделе:

Требования к контейнера

Поддержка активного документа в контейнер активных документов подразумевает не просто реализации интерфейса: она также статьи требует использования интерфейсов, содержащегося объекта. Это также применяется к расширениям активного документа, где контейнер также должен знать, как использовать эти интерфейсы расширения сами активных в документах.

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

  • Поддерживает обработки хранилища объекта через интерфейс IPersistStorage , то есть он должен реализовать экземпляр IStorage каждый активный документ.

  • Поддержка внедряя базовые функции OLE документов, требующей объектов «сайта» (один для каждого документа или внедрения), реализуйте IOleClientSite и IAdviseSink.

  • Встроенная поддержка активацию внедренных объектов или активных документов. Объекты сайта контейнера должны реализовать IOleInPlaceSite и объект кадра контейнера должен предоставить IOleInPlaceFrame.

  • Поддержка расширения активных документов путем реализации IOleDocumentSite, чтобы предоставить механизм для контейнера, чтобы контактировать с документом. Кроме того, контейнер могут реализовывать интерфейсы IOleCommandTarget и IContinueCallback активного документа, чтобы работать с простые команды, такие как печать или сбережения.

Объект кадра, объекты представления и объект контейнера могут также реализовать IOleCommandTarget для поддержки отправку некоторых команд, как описано в разделе Конечные объекты command. Объекты представления и контейнера могут также дополнительно реализовать IPrint и IContinueCallback, для поддержки программную печать, как описано в разделе Программная печать.

На следующем рисунке показаны основные связи между контейнером и компонентами в (слева) и активный документ и его на представления (справа). Активный документ и управляет хранилище данных и представлении отображается или при необходимости выводит эти данные. Интерфейсы полужирным шрифтом, необходимы для участия активного документа; эти полужирным шрифтом или курсивом необязательно. Все другие необходимые интерфейсы.

Интерфейсы контейнера активного документа

Документ, который поддерживает только одно представление может реализовать и компоненты представления и документа (то есть соответствующие интерфейсы) на одном конкретном классе. Кроме того, сайт контейнера, поддерживает только одно представление одновременно может быть сайт документа и сайт представления в один конкретный класс сайта. Объект кадра контейнера, должен оставаться указанным и компонент документа контейнера просто включен здесь для предоставления полного рисунке архитектуры; он не влияет на архитектурой контейнера активных документов.

Объекты сайта документа

В архитектуре контейнера активных документов, сайт документа совпадает с сайта объект клиента OLE в документах после добавления интерфейса IOleDocument:

interface IOleDocumentSite : IUnknown

{

HRESULT ActivateMe(IOleDocumentView *pViewToActivate);

}

Сайт документа по существу контейнер для одного или нескольких объектов сайта «представления». Каждый объект сайта представления связан с отдельными объектами представления документа управлянного сайтом документа. Если контейнер поддерживает только одно представление на сайт документа, он может реализовать сайт документа и сайт представления с одним определенным классом.

Объекты представления сайта

Объект представления сайта контейнера управляет места отображения для указанного представления документа. Помимо поддержки стандартный интерфейс IOleInPlaceSite, сайт представления также обычно реализует IContinueCallback для программного управления печати. (Обратите внимание, что запросы для представления объекта никогда IContinueCallback таким образом, его можно реализовать на любом объекте контейнер хочет).

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

Объект кадра

Объект кадра контейнера, в большинстве случаев такой же кадр, используемый для встроенной активации в документах OLE, т е одного, обрабатывает согласование меню и панели инструментов. Объект представления имеет доступ к этому объекту кадра через IOleInPlaceSite::GetWindowContext, который также предоставляет доступ к объекту контейнера, представляющий документ контейнера (который может обрабатывать согласование инструмента уровня области и, который содержит перечисление объектов).

Контейнер активных документов может повысить кадр, добавив IOleCommandTarget. Это позволяет получения команды, расположенных в интерфейсе пользователя активного документа таким же образом, что этот интерфейс может разрешить контейнер отправлять такие же команды (например, Новый файл, Сохранить как, Открыть, Печать; Изменение копии, Вставить, Отменить и др.) к активному документу. Дополнительные сведения см. в разделе Конечные объекты command.

См. также

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

Вложение активного документа