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


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

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

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

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

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

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

Контейнер активного документа, который интегрируется активные документы:

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

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

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

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

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

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

Интерфейсы контейнера Active Doc

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

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

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

interface IOleDocumentSite : IUnknown

{

HRESULT ActivateMe(IOleDocumentView *pViewToActivate);

}

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

Объекты сайта вид

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

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

Объект кадра

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

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

См. также

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

Вложенность активных документов