CDocObjectServer-Klasse
Implementiert die zusätzlichen OLE-Schnittstellen, die erforderlich sind, um aus einem normalen COleDocument
-Server einen vollständigen DocObject-Server zu machen: IOleDocument
, IOleDocumentView
, IOleCommandTarget
und IPrint
.
Syntax
class CDocObjectServer : public CCmdTarget
Member
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
CDocObjectServer::CDocObjectServer | Erstellt ein CDocObjectServer -Objekt. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
CDocObjectServer::ActivateDocObject | Aktiviert den Dokumentobjektserver, zeigt ihn jedoch nicht an. |
Geschützte Methoden
Name | Beschreibung |
---|---|
CDocObjectServer::OnActivateView | Zeigt die DocObject-Ansicht an. |
CDocObjectServer::OnApplyViewState | Stellt den Status der DocObject-Ansicht wieder her. |
CDocObjectServer::OnSaveViewState | Speichert den Status der DocObject-Ansicht. |
Hinweise
CDocObjectServer
wird von CCmdTarget
diesen abgeleitet und arbeitet eng damit zusammen COleServerDoc
, um die Schnittstellen verfügbar zu machen.
Ein DocObject-Serverdokument kann CDocObjectServerItem-Objekte enthalten , die die Serverschnittstelle zu DocObject-Elementen darstellen.
Um Ihren DocObject-Server anzupassen, leiten Sie Ihre eigene Klasse von CDocObjectServer
ihren Ansichtssetupfunktionen ab und überschreiben sie die Ansichtseinrichtungsfunktionen OnActivateView, OnApplyViewState und OnSaveViewState. Sie müssen eine neue Instanz Ihrer Klasse als Reaktion auf Frameworkaufrufe bereitstellen.
Weitere Informationen zu DocObjects finden Sie unter CDocObjectServerItem und COleCmdUI in der MFC-Referenz.
Vererbungshierarchie
CDocObjectServer
Anforderungen
Kopfzeile: afxdocob.h
CDocObjectServer::ActivateDocObject
Rufen Sie diese Funktion auf, um den Dokumentobjektserver zu aktivieren (aber nicht anzuzeigen).
void ActivateDocObject();
Hinweise
ActivateDocObject
ruft IOleDocumentSite
die ActivateMe
Methode auf, zeigt jedoch nicht die Ansicht an, da sie auf bestimmte Anweisungen zum Einrichten und Anzeigen der Ansicht wartet, die im Aufruf von CDocObjectServer::OnActivateView angegeben wird.
ActivateDocObject
Zusammen aktivieren und OnActivateView
anzeigen Sie die DocObject-Ansicht. Die DocObject-Aktivierung unterscheidet sich von anderen Arten der direkten OLE-Aktivierung. Die DocObject-Aktivierung umgeht die Anzeige von direkten Schlupfrahmen und Objektzierern (z. B. Ziehpunkte), ignoriert Objektausdehnungsfunktionen und zeichnet Bildlaufleisten innerhalb des Ansichtsrechtecks, anstatt sie außerhalb dieses Rechtecks zu zeichnen (wie bei normaler In-Situ-Aktivierung).
CDocObjectServer::CDocObjectServer
Erstellt und initialisiert ein CDocObjectServer
-Objekt.
explicit CDocObjectServer(
COleServerDoc* pOwner,
LPOLEDOCUMENTSITE pDocSite = NULL);
Parameter
pOwner
Ein Zeiger auf das Clientwebsitedokument, das der Client für den DocObject-Server ist.
pDocSite
Ein Zeiger auf die IOleDocumentSite
vom Container implementierte Schnittstelle.
Hinweise
Wenn ein DocObject aktiv ist, ermöglicht die OLE-Schnittstelle des Clientstandorts ( IOleDocumentSite
) dem DocObject-Server die Kommunikation mit seinem Client (dem Container). Wenn ein DocObject-Server aktiviert wird, überprüft er zunächst, ob der Container die IOleDocumentSite
Schnittstelle implementiert. Wenn ja, wird COleServerDoc::GetDocObjectServer aufgerufen, um festzustellen, ob der Container DocObjects unterstützt. Gibt standardmäßig GetDocObjectServer
NULL zurück. Sie müssen außer Kraft setzen COleServerDoc::GetDocObjectServer
, um ein neues CDocObjectServer
Objekt oder ein abgeleitetes Objekt selbst zu erstellen, mit Zeigern auf den COleServerDoc
Container und dessen IOleDocumentSite
Schnittstelle als Argumente für den Konstruktor.
CDocObjectServer::OnActivateView
Rufen Sie diese Funktion auf, um die DocObject-Ansicht anzuzeigen.
virtual HRESULT OnActivateView();
Rückgabewert
Gibt einen Fehler- oder Warnwert zurück. Gibt standardmäßig NOERROR zurück, wenn dies erfolgreich ist; andernfalls E_FAIL.
Hinweise
Diese Funktion erstellt ein direktes Framefenster, zeichnet Bildlaufleisten in der Ansicht, richtet die Menüs ein, die der Server für seinen Container freigibt, fügt Framesteuerelemente hinzu, legt das aktive Objekt fest und zeigt schließlich das direkte Framefenster an und legt den Fokus fest.
CDocObjectServer::OnApplyViewState
Überschreiben Sie diese Funktion, um den Status der DocObject-Ansicht wiederherzustellen.
virtual void OnApplyViewState(CArchive& ar);
Parameter
Ar
Ein CArchive
Objekt, aus dem der Ansichtszustand serialisiert werden soll.
Hinweise
Diese Funktion wird aufgerufen, wenn die Ansicht nach der Instanziierung zum ersten Mal angezeigt wird. OnApplyViewState
weist eine Ansicht an, sich entsprechend den Daten im CArchive
zuvor mit OnSaveViewState gespeicherten Objekt neu zu initialisieren. Die Ansicht muss die Daten im CArchive
Objekt überprüfen, da der Container nicht versucht, die Ansichtszustandsdaten auf irgendeine Weise zu interpretieren.
Sie können OnSaveViewState
beständige Informationen speichern, die für den Status Ihrer Ansicht spezifisch sind. Wenn Sie das Speichern von Informationen außer Kraft setzen OnSaveViewState
, sollten Sie diese Informationen überschreiben OnApplyViewState
und auf Ihre Ansicht anwenden, wenn sie neu aktiviert wird.
CDocObjectServer::OnSaveViewState
Überschreiben Sie diese Funktion, um zusätzliche Statusinformationen zu Ihrer DocObject-Ansicht zu speichern.
virtual void OnSaveViewState(CArchive& ar);
Parameter
Ar
Ein CArchive
Objekt, in das der Ansichtszustand serialisiert wird.
Hinweise
Ihr Zustand kann Eigenschaften wie ansichtstyp, Zoomfaktor, Einfüge- und Auswahlpunkt usw. enthalten. Der Container ruft diese Funktion in der Regel auf, bevor die Ansicht deaktiviert wird. Der gespeicherte Zustand kann später über OnApplyViewState wiederhergestellt werden.
Sie können OnSaveViewState
beständige Informationen speichern, die für den Status Ihrer Ansicht spezifisch sind. Wenn Sie das Speichern von Informationen außer Kraft setzen OnSaveViewState
, sollten Sie diese Informationen überschreiben OnApplyViewState
und auf Ihre Ansicht anwenden, wenn sie neu aktiviert wird.
Siehe auch
CCmdTarget-Klasse
Hierarchiediagramm
CDocObjectServerItem-Klasse