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.
Hinweis
Die Microsoft Foundation Classes (MFC)-Bibliothek wird weiterhin unterstützt. Wir fügen jedoch keine Features mehr hinzu oder aktualisieren die Dokumentation.
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:
Es muss in der Lage sein, Objektspeicherung über die
IPersistStorageSchnittstelle zu verarbeiten, d. h. es muss für jedes aktive Dokument eineIStorageInstanz bereitstellen.Unterstützen Sie die grundlegenden Funktionen zur Einbettung von OLE-Dokumenten. Dazu sind "Site"-Objekte (eines pro Dokument oder Einbettung) erforderlich, die
IOleClientSiteundIAdviseSinkimplementieren.Unterstützung der direkten Aktivierung eingebetteter Objekte oder aktiver Dokumente. Die Objekte der Site des Containers müssen
IOleInPlaceSiteimplementieren und das Frameobjekt des Containers mussIOleInPlaceFramebereitstellen.Unterstützen Sie die Erweiterungen der aktiven Dokumente, indem Sie
IOleDocumentSiteimplementieren, um dem Container die Kommunikation mit dem Dokument zu ermöglichen. Optional kann der Container die Schnittstellen für aktive DokumenteIOleCommandTargetundIContinueCallbackimplementieren, um einfache Befehle wie Drucken oder Speichern aufzunehmen.
Das Frameobjekt, die Ansichtsobjekte und das Containerobjekt können optional IOleCommandTarget implementieren, um die Ausführung bestimmter Befehle zu unterstützen, wie in Kommandos und Ziele beschrieben. Ansichts- und Containerobjekte können optional auch IPrint und IContinueCallback implementieren und unterstützen, um programmgesteuertes Drucken zu ermöglichen, 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. Fett formatierte Schnittstellen sind diejenigen, die für die aktive Teilnahme an Dokumenten erforderlich sind; fett und kursiv formatierte 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.
Objekte der Dokumentenwebsite
In der Architektur der aktiven Dokumenteneinbettung ist eine Dokumentensite dasselbe wie ein Client-Site-Objekt in OLE-Dokumenten mit dem Zusatz der IOleDocument-Schnittstelle:
interface IOleDocumentSite : IUnknown
{
HRESULT ActivateMe(IOleDocumentView *pViewToActivate);
}
Die Dokumentwebsite ist konzeptionell der Container für ein oder mehrere "View Site"-Objekte. Jedes Ansichtsseitenobjekt ist einzelnen Ansichtsobjekten des Dokuments zugeordnet, das von der Dokumentenseite 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 Sichtobjekt eines Containers verwaltet den Anzeigebereich für eine bestimmte Ansicht eines Dokuments. Zusätzlich zur Unterstützung der Standardschnittstelle IOleInPlaceSite implementiert eine Ansichtsseite allgemein auch IContinueCallback zur programmgesteuerten Drucksteuerung. (Beachten Sie, dass das Ansichtsobjekt niemals nach IContinueCallback abfragt, sodass 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 View-Site-Objekte innerhalb der Dokumentsite zu erstellen. Dadurch wird jede Ansicht mit separaten Aktivierungs- und Deaktivierungsdiensten ausgestattet, die über IOleInPlaceSite bereitgestellt werden.
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 über IOleInPlaceSite::GetWindowContext, das auch Zugriff auf das Containerobjekt bietet, das das Containerdokument darstellt (das Verhandlungen über Symbolleisten auf Bereichsebene und die Aufzählung der enthaltenen Objekte verarbeiten kann).
Ein aktiver Dokumentcontainer kann den Frame durch Hinzufügen von IOleCommandTarget erweitern. Auf diese Weise kann es Befehle empfangen, die von der Benutzeroberfläche des aktiven Dokuments ausgehen, wie diese Schnittstelle es einem Container ermöglicht, dieselben Befehle zu senden (z. B. Datei neu, Öffnen, Speichern unter, Drucken; Bearbeiten Kopieren, Einfügen, Rückgängig und andere) an ein aktives Dokument. Weitere Informationen finden Sie unter Command Targets.