Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein aktiver Dokumentcontainer, z. B. Microsoft Office Binder oder Internet Explorer, ermöglicht es Ihnen, mit mehreren Dokumenten verschiedener Anwendungstypen innerhalb eines einzelnen Frames zu arbeiten (anstatt sie zu erzwingen, mehrere Anwendungsframes für jeden Dokumenttyp zu erstellen und zu verwenden).
MFC bietet vollständige Unterstützung für aktive Dokumentcontainer in der COleDocObjectItem Klasse. Sie können den MFC-Anwendungs-Assistenten verwenden, um einen aktiven Dokumentcontainer zu erstellen, indem Sie das Kontrollkästchen "Aktiver Dokumentcontainer" auf der Seite " Verbunddokumentunterstützung " des MFC-Anwendungs-Assistenten aktivieren. Weitere Informationen finden Sie unter Erstellen einer aktiven Dokumentcontaineranwendung.
Weitere Informationen zu aktiven Dokumentcontainern finden Sie unter:
Containeranforderungen
Aktive Dokumentunterstützung in einem aktiven Dokumentcontainer impliziert mehr als nur Schnittstellenimplementierungen: Sie erfordert auch Kenntnisse über die Verwendung der Schnittstellen eines enthaltenen Objekts. Das gleiche gilt für aktive Dokumenterweiterungen, bei denen der Container auch wissen muss, wie diese Erweiterungsschnittstellen für die aktiven Dokumente selbst verwendet werden.
Ein aktiver Dokumentcontainer, der aktive Dokumente integriert, muss:
Sie kann objektspeichern über die
IPersistStorageSchnittstelle verarbeiten, d. h. sie muss für jedes aktive Dokument eineIStorageInstanz bereitstellen.Unterstützen Sie die grundlegenden Einbettungsfeatures von OLE-Dokumenten, und erfordern das Implementieren
IOleClientSiteundIAdviseSinkEinbetten von "Site"-Objekten (eins pro Dokument oder Einbettung).Unterstützung der direkten Aktivierung eingebetteter Objekte oder aktiver Dokumente. Die Websiteobjekte des Containers müssen implementiert werden
IOleInPlaceSite, und das Frameobjekt des Containers muss bereitgestellt werdenIOleInPlaceFrame.Unterstützen Sie die Erweiterungen der aktiven Dokumente, indem Sie implementieren
IOleDocumentSite, um den Mechanismus für den Container für die Kommunikation mit dem Dokument bereitzustellen. Optional kann der Container die aktiven DokumentschnittstellenIOleCommandTargetimplementieren undIContinueCallbackeinfache Befehle wie drucken oder speichern.
Das Frameobjekt, die Ansichtsobjekte und das Containerobjekt können optional implementiert werden IOleCommandTarget , um die Verteiler bestimmter Befehle zu unterstützen, wie in Befehlszielen beschrieben. Ansichts- und Containerobjekte können optional auch programmgesteuertes Drucken implementieren IPrint und IContinueCallbackunterstützen, wie unter "Programmgesteuertes Drucken" beschrieben.
Die folgende Abbildung zeigt die konzeptionellen Beziehungen zwischen einem Container und seinen Komponenten (links) und dem aktiven Dokument und seinen Ansichten (rechts). Das aktive Dokument verwaltet Speicher und Daten, und die Ansicht zeigt diese Daten an oder druckt diese Daten optional. Schnittstellen fett formatiert sind diejenigen, die für die aktive Dokumentteilnahme erforderlich sind; diese fett und kursiv sind optional. Alle anderen Schnittstellen sind erforderlich.
Ein Dokument, das nur eine einzelne Ansicht unterstützt, kann sowohl die Ansichts- als auch dokumentkomponenten (d. h. die entsprechenden Schnittstellen) in einer einzelnen konkreten Klasse implementieren. Darüber hinaus kann eine Containerwebsite, die jeweils nur eine Ansicht unterstützt, die Dokumentwebsite und die Ansichtswebsite in einer einzigen konkreten Websiteklasse kombinieren. Das Frameobjekt des Containers muss jedoch eindeutig bleiben, und die Dokumentkomponente des Containers ist hier lediglich enthalten, um ein vollständiges Bild der Architektur zu geben; sie ist nicht von der aktiven Dokumenteindämmungsarchitektur betroffen.
Dokumentwebsiteobjekte
In der aktiven Dokumenteindämmungsarchitektur ist eine Dokumentwebsite mit einem Clientwebsiteobjekt in OLE-Dokumenten mit dem Hinzufügen der IOleDocument Schnittstelle identisch:
interface IOleDocumentSite : IUnknown
{
HRESULT ActivateMe(IOleDocumentView *pViewToActivate);
}
Die Dokumentwebsite ist konzeptionell der Container für ein oder mehrere "View Site"-Objekte. Jedes Ansichtswebsiteobjekt ist einzelnen Ansichtsobjekten des dokuments zugeordnet, das von der Dokumentwebsite verwaltet wird. Wenn der Container nur eine einzelne Ansicht pro Dokumentwebsite unterstützt, kann er die Dokumentwebsite und die Ansichtswebsite mit einer einzelnen konkreten Klasse implementieren.
Websiteobjekte anzeigen
Das Ansichtswebsiteobjekt eines Containers verwaltet den Anzeigebereich für eine bestimmte Ansicht eines Dokuments. Neben der Unterstützung der Standardschnittstelle IOleInPlaceSite implementiert eine Ansichtswebsite IContinueCallback im Allgemeinen auch programmgesteuerte Drucksteuerungen. (Beachten Sie, dass das Ansichtsobjekt niemals abfragen IContinueCallback kann, damit es tatsächlich für jedes Objekt implementiert werden kann, das der Container wünscht.)
Ein Container, der mehrere Ansichten unterstützt, muss in der Lage sein, mehrere Ansichtswebsiteobjekte innerhalb der Dokumentwebsite zu erstellen. Dies stellt jede Ansicht mit separaten Aktivierungs- und Deaktivierungsdiensten bereit, wie durch diese bereitgestellt IOleInPlaceSite.
Frame-Objekt
Das Frameobjekt des Containers ist in den meisten Fällen derselbe Frame, der für die direkte Aktivierung in OLE-Dokumenten verwendet wird, d. h. der, der die Menü- und Symbolleistenverhandlung behandelt. Ein Ansichtsobjekt hat Zugriff auf dieses Frameobjekt IOleInPlaceSite::GetWindowContext, das auch Zugriff auf das Containerobjekt bietet, das das Containerdokument darstellt (das die Aushandlung auf Symbolleistenebene und die enthaltene Objektenumeration verarbeiten kann).
Ein aktiver Dokumentcontainer kann den Frame durch Hinzufügen erweitern IOleCommandTarget. Auf diese Weise können Sie Befehle empfangen, die auf der Benutzeroberfläche des aktiven Dokuments auf dieselbe Weise stammen, wie diese Schnittstelle es einem Container ermöglichen kann, dieselben Befehle zu senden (z. B. "Datei neu", "Öffnen", " Speichern unter", "Drucken"; Bearbeiten Sie "Kopieren", "Einfügen", " Rückgängig" und "Andere") in ein aktives Dokument. Weitere Informationen finden Sie unter Command Targets.