Freigeben über


Active Document-Container

Ein Active Document-Container wie Microsoft Internet Explorer oder Office-Binder, ermöglicht Ihnen die Arbeit mit mehreren Dokumenten aus verschiedenen Anwendungstypen in einzelnen Frames (anstatt zu erzwingen, dass Sie mehrere Frames Anwendung für jeden Dokumenttyp zu erstellen und zu verwenden).

MFC bietet vollständige Unterstützung für Active Document-Container in der COleDocObjectItem-Klasse.Sie können den MFC-Anwendungs-Assistenten verwenden, um einem Active Document-Container erstellen, indem Sie das Kontrollkästchen auf der Active Document-ContainerVerbunddokumente Seite des MFC-Anwendungs-Assistenten auswählen.Weitere Informationen finden Sie unter Eine Active Document-Container-Anwendung erstellen.

Weitere Informationen zu Active Document-Container finden Sie unter:

Container-Anforderungen

Active Document-Unterstützung in einem Active Document-Container bedeutet mehr als nur Schnittstellenimplementierungen: Außerdem erfordert Kenntnisse der Verwendung der Schnittstellen eines enthaltenden Objekts.Dasselbe gilt für aktive Dokument zu Verbesserungen, mit denen der Container können auch Add-In muss diese Schnittstellen auf dem aktiven Dokument selbst verwenden.

Ein Active Document-Container, der Active Documents integriert, muss:

  • Stellen Sie zum Behandeln von Datenspeicher Objekt kann über die IPersistStorage -Schnittstelle. h. IStorage muss sie über eine Instanz jedes aktiven Dokument bereitstellen.

  • Sichern Sie die grundlegenden Features von OLE-Dokumenten Mithilfe von eingebetteten und "Site" - Objekten (eins pro Dokument oder die Einbettung) erfordern das Implementieren und IOleClientSite IAdviseSink.

  • Sichern Sie die direkte Aktivierung von eingebetteten Objekten oder aktiven Dokumenten.Die Website des Containers werden müssen IOleInPlaceSite implementieren und das Frameobjekt des Containers muss IOleInPlaceFrame bereitstellen.

  • Sichern der aktiven Erweiterungen der Dokumente, indem Sie IOleDocumentSite implementieren, um den Mechanismus bereitstellen, sodass der Container mit dem Dokument verweist.Optional kann der Container die aktiven Dokumentoberflächen IOleCommandTarget und IContinueCallback implementieren, um einfache Befehle wie das Drucken oder Speichern aufzuheben.

Das Frameobjekt, die Objekte und das Containerobjekt IOleCommandTarget können optional implementieren, um die Weiterleitung von bestimmten Befehlen zu unterstützen, wie in Befehls-Ziele erläutert.Ansicht und Containerobjekte können IPrint und optional auch IContinueCallback implementieren, um programmgesteuerten Drucken zu unterstützen, wie in Programmgesteuerter Drucken erläutert.

Die folgende Abbildung zeigt grundlegende Beziehungen zwischen einem Container und ihren Komponenten (links) und das aktive Dokument und seiner Ansichten angezeigt (Berechtigung).Das aktive Dokument verwalteten Speicher und Daten, und die Ansicht zeigt diese Daten gedruckt oder optional.Schnittstellen sind fett dargestellt, die für aktive Dokument teilnahme erforderlich sind. jene Fett und kursive sind optional.Alle anderen Schnittstellen sind erforderlich.

Schnittstellen des Containers für das aktive Dokument

Ein Dokument, das nur eine Ansicht unterstützt, kann die Ansichts- und Dokumenten Komponenten (das heißt ihre entsprechenden Schnittstellen) auf einer einzelnen konkreten Klasse implementieren.Außerdem kann eine Website Container mit jeweils nur eine Ansicht unterstützt, die Site und die Site in einer einzelnen konkreten Bonität kombinieren.Das Frameobjekt des Containers muss jedoch unterschiedlich sein, und die Komponente des Containers wird hier nur berücksichtigt, um ein Vollbild der Architektur zu vermitteln. Sie ist nicht in der Active Document-Kapselungsarchitektur betroffen.

Dokumenten-Website-Objekte

In der Active Document-Kapselungsarchitektur ist eine Website Dokumente dieselbe wie ein Client mit OLE-Dokumenten Website Objekt in der Einführung der IOleDocument-Schnittstelle:

interface IOleDocumentSite : IUnknown

{

HRESULT ActivateMe(IOleDocumentView *pViewToActivate);

}

Die Website Dokumente sind konzeptionell der Container für ein oder mehrere Objekte" Website anzeigen ".Jedes Objekt wird mit einzelnen Website Ansicht Ansichtsobjekte des Dokuments zugeordnet, das durch die Site verwaltet wird.Wenn der Container nur eine einzelne Ansicht pro Website Dokumente unterstützt, kann er die Website Dokumente und die Site mit einer einzelnen konkreten Klasse implementieren.

Ansichts-Website-Objekte

Ansichts-Website Objekt eines Containers verwaltet den Bildbereich für eine bestimmte Ansicht eines Dokuments.Zusätzlich zum Sichern der IOleInPlaceSite-Schnittstelle implementiert normalerweise auch eine Website anzeigen IContinueCallback für programmgesteuerte Steuerung Drucken.(Beachten Sie, dass die Abfragen des Objekts anzeigen, damit es nicht für IContinueCallback für jedes Objekt tatsächlich Containern implementiert werden können, wünscht.)

Ein Container, der mehrere Ansichten unterstützt, muss sein, mehrere Objekte innerhalb der Website Ansicht Website Dokumente zu erstellen.Dies stellt eine Ansicht mit separaten Einschalten und Ausschalten-Dienstleistungen wie beispielsweise durch IOleInPlaceSite.

Frame-Objekt

Das Frameobjekt des Containers ist in den meisten Fällen die gleichen Frame, der für die direkte Aktivierung in OLE-Dokumenten verwendet wird, d. h. die Menü- und Symbolleisten, die aushandlung behandelt.Ein Ansichtsobjekt hat Zugriff auf diesen Frameobjekt, das von IOleInPlaceSite::GetWindowContext auch den Zugriff auf das Containerobjekt bereitstellt, das das Containerdokument darstellt LEVEL-Symbolleisten Bereich (d aushandlung Enumeration enthaltene Objekt und behandeln kann).

Ein Active Document-Container kann die Frames erweitern, indem IOleCommandTarget hinzugefügt wird.Dies ermöglicht dieser Befehle zu empfangen, die aus der aktiven Benutzeroberfläche des Dokuments gleichermaßen stammen, dass diese Schnittstelle in einem Container ermöglichen kann, um dieselben Befehle zu senden (z File New, Öffnen, Speichern unter, Drucken. Edit Copy, Einfügen, Rückgängig und andere) in einen aktiven Dokument.Weitere Informationen finden Sie unter Befehls-Ziele.

Siehe auch

Konzepte

Active Document-Einschluss