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, IOleCommandTargetund 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

CObject

CCmdTarget

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 IOleDocumentSitedie 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