Freigeben über


COleServerDoc-Klasse

Die Basisklasse für OLE-Serverdokumente.

Syntax

class AFX_NOVTABLE COleServerDoc : public COleLinkingDoc

Member

Öffentliche Konstruktoren

Name Beschreibung
COleServerDoc::COleServerDoc Erstellt ein COleServerDoc-Objekt.

Öffentliche Methoden

Name Beschreibung
COleServerDoc::ActivateDocObject Aktiviert das zugeordnete DocObject-Dokument.
COleServerDoc::ActivateInPlace Aktiviert das Dokument für die direkte Bearbeitung.
COleServerDoc::D eactivateAndUndo Deaktiviert die Benutzeroberfläche des Servers.
COleServerDoc::D iscardUndoState Verwirft Rückgängig-Zustandsinformationen.
COleServerDoc::GetClientSite Ruft einen Zeiger auf die zugrunde liegende IOleClientSite Schnittstelle ab.
COleServerDoc::GetEmbeddedItem Gibt einen Zeiger auf ein Element zurück, das das gesamte Dokument darstellt.
COleServerDoc::GetItemClipRect Gibt das aktuelle Beschneidungsrechteck für die direkte Bearbeitung zurück.
COleServerDoc::GetItemPosition Gibt das aktuelle Positionsrechteck relativ zum Clientbereich der Containeranwendung zur direkten Bearbeitung zurück.
COleServerDoc::GetZoomFactor Gibt den Zoomfaktor in Pixel zurück.
COleServerDoc::IsDocObject Bestimmt, ob das Dokument ein DocObject ist.
COleServerDoc::IsEmbedded Gibt an, ob das Dokument in ein Containerdokument eingebettet oder eigenständiges Dokument ausgeführt wird.
COleServerDoc::IsInPlaceActive Gibt TRUE zurück, wenn das Element zurzeit aktiviert ist.
COleServerDoc::NotifyChanged Benachrichtigt Container, dass der Benutzer das Dokument geändert hat.
COleServerDoc::NotifyClosed Benachrichtigt Container, die der Benutzer das Dokument geschlossen hat.
COleServerDoc::NotifyRename Benachrichtigt Container, dass der Benutzer das Dokument umbenannt hat.
COleServerDoc::NotifySaved Benachrichtigt Container, dass der Benutzer das Dokument gespeichert hat.
COleServerDoc::OnDeactivate Wird vom Framework aufgerufen, wenn der Benutzer ein Element deaktiviert, das aktiviert wurde.
COleServerDoc::OnDeactivateUI Vom Framework aufgerufen, um Steuerelemente und andere Elemente der Benutzeroberfläche zu zerstören, die für die direkte Aktivierung erstellt wurden.
COleServerDoc::OnDocWindowActivate Wird vom Framework aufgerufen, wenn das Dokumentrahmenfenster des Containers aktiviert oder deaktiviert wird.
COleServerDoc::OnResizeBorder Wird vom Framework aufgerufen, wenn die Größe des Frame- oder Dokumentfensters der Containeranwendung geändert wird.
COleServerDoc::OnShowControlBars Wird vom Framework aufgerufen, um Steuerleisten für die direkte Bearbeitung ein- oder auszublenden.
COleServerDoc::OnUpdateDocument Wird vom Framework aufgerufen, wenn ein Serverdokument, das ein eingebettetes Element ist, gespeichert wird, wird die Kopie des Containers des Elements aktualisiert.
COleServerDoc::RequestPositionChange Ändert die Position des direkten Bearbeitungsrahmens.
COleServerDoc::SaveEmbedding Weist die Containeranwendung an, das Dokument zu speichern.
COleServerDoc::ScrollContainerBy Scrollt das Containerdokument.
COleServerDoc::UpdateAllItems Benachrichtigt Container, dass der Benutzer das Dokument geändert hat.

Geschützte Methoden

Name Beschreibung
COleServerDoc::CreateInPlaceFrame Vom Framework aufgerufen, um ein Framefenster für die direkte Bearbeitung zu erstellen.
COleServerDoc::D estroyInPlaceFrame Vom Framework aufgerufen, um ein Framefenster für die direkte Bearbeitung zu zerstören.
COleServerDoc::GetDocObjectServer Überschreiben Sie diese Funktion, um ein neues CDocObjectServer Objekt zu erstellen und anzugeben, dass es sich bei diesem Dokument um einen DocObject-Container handelt.
COleServerDoc::OnClose Wird vom Framework aufgerufen, wenn ein Container anfordert, das Dokument zu schließen.
COleServerDoc::OnExecOleCmd Führt einen angegebenen Befehl aus oder zeigt Hilfe für den Befehl an.
COleServerDoc::OnFrameWindowActivate Wird vom Framework aufgerufen, wenn das Framefenster des Containers aktiviert oder deaktiviert wird.
COleServerDoc::OnGetEmbeddedItem Wird aufgerufen, um ein COleServerItem Element abzurufen, das das gesamte Dokument darstellt; wird verwendet, um ein eingebettetes Element abzurufen. Implementierung erforderlich.
COleServerDoc::OnReactivateAndUndo Wird vom Framework aufgerufen, um Änderungen rückgängig zu machen, die während der direkten Bearbeitung vorgenommen wurden.
COleServerDoc::OnSetHostNames Wird vom Framework aufgerufen, wenn ein Container den Fenstertitel für ein eingebettetes Objekt festlegt.
COleServerDoc::OnSetItemRects Wird vom Framework aufgerufen, um das direkte Bearbeitungsrahmenfenster innerhalb des Fensters der Containeranwendung zu positionieren.
COleServerDoc::OnShowDocument Vom Framework aufgerufen, um das Dokument ein- oder auszublenden.

Hinweise

Ein Serverdokument kann COleServerItem-Objekte enthalten, die die Serverschnittstelle für eingebettete oder verknüpfte Elemente darstellen. Wenn eine Serveranwendung von einem Container zum Bearbeiten eines eingebetteten Elements gestartet wird, wird das Element als eigenes Serverdokument geladen. das COleServerDoc Objekt nur ein COleServerItem Objekt enthält, das aus dem gesamten Dokument besteht. Wenn eine Serveranwendung von einem Container zum Bearbeiten eines verknüpften Elements gestartet wird, wird ein vorhandenes Dokument vom Datenträger geladen. Ein Teil des Dokumentinhalts wird hervorgehoben, um das verknüpfte Element anzugeben.

COleServerDoc Objekte können auch Elemente der COleClientItem-Klasse enthalten. Auf diese Weise können Sie Containerserveranwendungen erstellen. Das Framework bietet Funktionen zum ordnungsgemäßen Speichern der COleClientItem Elemente während der Wartung der COleServerItem Objekte.

Wenn Ihre Serveranwendung keine Verknüpfungen unterstützt, enthält ein Serverdokument immer nur ein Serverelement, das das gesamte eingebettete Objekt als Dokument darstellt. Wenn Ihre Serveranwendung Verknüpfungen unterstützt, muss jedes Mal ein Serverelement erstellt werden, wenn eine Auswahl in die Zwischenablage kopiert wird.

Um eine Klasse zu verwendenCOleServerDoc, leiten Sie eine Klasse davon ab und implementieren Sie die OnGetEmbeddedItem-Memberfunktion, mit der Ihr Server eingebettete Elemente unterstützen kann. Leiten Sie eine Klasse ab COleServerItem , um die Elemente in Ihren Dokumenten zu implementieren, und geben Sie Objekte dieser Klasse von OnGetEmbeddedItem.

Um verknüpfte Elemente zu unterstützen, COleServerDoc stellt die OnGetLinkedItem-Memberfunktion bereit. Sie können die Standardimplementierung verwenden oder sie außer Kraft setzen, wenn Sie über eine eigene Möglichkeit zum Verwalten von Dokumentelementen verfügen.

Sie benötigen eine abgeleitete COleServerDocKlasse für jeden Serverdokumenttyp, den Ihre Anwendung unterstützt. Wenn Ihre Serveranwendung beispielsweise Arbeitsblätter und Diagramme unterstützt, benötigen Sie zwei COleServerDocabgeleitete Klassen.

Weitere Informationen zu Servern finden Sie im Artikel "Server: Implementieren eines Servers".

Vererbungshierarchie

CObject

CCmdTarget

CDocument

COleDocument

COleLinkingDoc

COleServerDoc

Anforderungen

Kopfzeile: afxole.h

COleServerDoc::ActivateDocObject

Aktiviert das zugeordnete DocObject-Dokument.

void ActivateDocObject();

Hinweise

COleServerDoc Standardmäßig werden aktive Dokumente (auch als DocObjects bezeichnet) nicht unterstützt. Informationen zum Aktivieren dieser Unterstützung finden Sie unter "GetDocObjectServer" und "CDocObjectServer".

COleServerDoc::ActivateInPlace

Aktiviert das Element für die direkte Bearbeitung.

BOOL ActivateInPlace();

Rückgabewert

Nonzero bei erfolgreicher Ausführung; andernfalls 0, was angibt, dass das Element vollständig geöffnet ist.

Hinweise

Diese Funktion führt alle Vorgänge aus, die für die direkte Aktivierung erforderlich sind. Es erstellt ein direktes Framefenster, aktiviert es und passt die Größe an das Element an, richtet freigegebene Menüs und andere Steuerelemente ein, scrollt das Element in die Ansicht und legt den Fokus auf das direkte Framefenster fest.

Diese Funktion wird von der Standardimplementierung von COleServerItem::OnShow aufgerufen. Rufen Sie diese Funktion auf, wenn Ihre Anwendung ein anderes Verb für die direkte Aktivierung unterstützt (z. B. "Wiedergeben").

COleServerDoc::COleServerDoc

Erstellt ein COleServerDoc Objekt, ohne eine Verbindung mit den OLE-System-DLLs herzustellen.

COleServerDoc();

Hinweise

Sie müssen COleLinkingDoc::Register aufrufen, um die Kommunikation mit OLE zu öffnen. Wenn Sie COleTemplateServer in Ihrer Anwendung verwenden, COleLinkingDoc::Register wird für Sie durch COleLinkingDocdie Implementierung von OnNewDocument, , OnOpenDocumentund OnSaveDocument.

COleServerDoc::CreateInPlaceFrame

Das Framework ruft diese Funktion auf, um ein Framefenster für die direkte Bearbeitung zu erstellen.

virtual COleIPFrameWnd* CreateInPlaceFrame(CWnd* pParentWnd);

Parameter

pParentWnd
Zeigen Sie auf das übergeordnete Fenster der Containeranwendung.

Rückgabewert

Ein Zeiger auf das direkte Framefenster oder NULL, wenn dies nicht erfolgreich war.

Hinweise

Die Standardimplementierung verwendet Informationen, die in der Dokumentvorlage angegeben sind, um den Frame zu erstellen. Die verwendete Ansicht ist die erste Ansicht, die für das Dokument erstellt wurde. Diese Ansicht wird vorübergehend vom ursprünglichen Frame getrennt und an den neu erstellten Frame angefügt.

Dies ist eine erweiterte Außerkraftsetzung.

COleServerDoc::D eactivateAndUndo

Rufen Sie diese Funktion auf, wenn Ihre Anwendung "Rückgängig" unterstützt, und der Benutzer wählt "Rückgängig" aus, nachdem ein Element aktiviert wurde, aber vor der Bearbeitung.

BOOL DeactivateAndUndo();

Rückgabewert

Bei Erfolg ein Wert ungleich 0 (null), andernfalls 0 (null).

Hinweise

Wenn die Containeranwendung mithilfe der Microsoft Foundation Class Library geschrieben wird, bewirkt das Aufrufen dieser Funktion, dass COleClientItem::OnDeactivateAndUndo aufgerufen wird, wodurch die Benutzeroberfläche des Servers deaktiviert wird.

COleServerDoc::D estroyInPlaceFrame

Das Framework ruft diese Funktion auf, um ein direktes Framefenster zu zerstören und das Dokumentfenster der Serveranwendung vor der direkten Aktivierung in den Zustand zurückzugeben.

virtual void DestroyInPlaceFrame(COleIPFrameWnd* pFrameWnd);

Parameter

pFrameWnd
Zeigen Sie auf das direkte Rahmenfenster, das zerstört werden soll.

Hinweise

Dies ist eine erweiterte Außerkraftsetzung.

COleServerDoc::D iscardUndoState

Wenn der Benutzer einen Bearbeitungsvorgang ausführt, der nicht rückgängig gemacht werden kann, rufen Sie diese Funktion auf, um zu erzwingen, dass die Containeranwendung die Rückgängig-Zustandsinformationen verwerfen kann.

BOOL DiscardUndoState();

Rückgabewert

Bei Erfolg ein Wert ungleich 0 (null), andernfalls 0 (null).

Hinweise

Diese Funktion wird bereitgestellt, sodass Server, die "Rückgängig" unterstützen, Ressourcen freigeben können, die andernfalls von Rückgängig-Zustandsinformationen genutzt werden, die nicht verwendet werden können.

COleServerDoc::GetClientSite

Ruft einen Zeiger auf die zugrunde liegende IOleClientSite Schnittstelle ab.

LPOLECLIENTSITE GetClientSite() const;

Rückgabewert

Ruft einen Zeiger auf die zugrunde liegende IOleClientSite-Schnittstelle ab.

COleServerDoc::GetDocObjectServer

Überschreiben Sie diese Funktion, um ein neues CDocObjectServer Element zu erstellen und einen Zeiger darauf zurückzugeben.

virtual CDocObjectServer* GetDocObjectServer(LPOLEDOCUMENTSITE pDocSite);

Parameter

pDocSite
Zeiger auf die IOleDocumentSite Schnittstelle, die dieses Dokument mit dem Server verbindet.

Rückgabewert

Ein Zeiger auf ein CDocObjectServer; NULL, wenn der Vorgang fehlgeschlagen ist.

Hinweise

Wenn ein DocObject-Server aktiviert wird, zeigt die Rückgabe eines Nicht-NULL-Zeigers an, dass der Client DocObjects unterstützen kann. Die Standardimplementierung gibt NULL zurück.

Eine typische Implementierung für ein Dokument, das DocObjects unterstützt, weist einfach ein neues CDocObjectServer Objekt zu und gibt es an den Aufrufer zurück. Zum Beispiel:

CDocObjectServer* CMFCOleServerDoc::GetDocObjectServer(LPOLEDOCUMENTSITE pSite)
{
   return new CDocObjectServer(this, pSite);
}

COleServerDoc::GetEmbeddedItem

Rufen Sie diese Funktion auf, um einen Zeiger auf ein Element abzurufen, das das gesamte Dokument darstellt.

COleServerItem* GetEmbeddedItem();

Rückgabewert

Ein Zeiger auf ein Element, das das gesamte Dokument darstellt; NULL, wenn der Vorgang fehlgeschlagen ist.

Hinweise

Es ruft COleServerDoc::OnGetEmbeddedItem, eine virtuelle Funktion ohne Standardimplementierung auf.

COleServerDoc::GetItemClipRect

Rufen Sie die GetItemClipRect Memberfunktion auf, um die Clippingrechteckkoordinaten des Elements abzurufen, das bearbeitet wird.

void GetItemClipRect(LPRECT lpClipRect) const;

Parameter

lpClipRect
Zeigen Sie auf eine RECT Struktur oder ein CRect Objekt, um die Clippingrechteckkoordinaten des Elements zu empfangen.

Hinweise

Koordinaten sind in Pixeln relativ zum Clientbereich des Containeranwendungsfensters.

Zeichnung sollte nicht außerhalb des Beschneidungsrechtecks erfolgen. In der Regel wird die Zeichnung automatisch eingeschränkt. Verwenden Sie diese Funktion, um zu bestimmen, ob der Benutzer außerhalb des sichtbaren Teils des Dokuments gescrollt hat. Wenn ja, scrollen Sie nach Bedarf im Containerdokument mithilfe eines Aufrufs von ScrollContainerBy.

COleServerDoc::GetItemPosition

Rufen Sie die GetItemPosition Memberfunktion auf, um die Koordinaten des Elements abzurufen, das bearbeitet wird.

void GetItemPosition(LPRECT lpPosRect) const;

Parameter

lpPosRect
Zeigen Sie auf eine RECT Struktur oder ein CRect Objekt, um die Koordinaten des Elements zu empfangen.

Hinweise

Koordinaten sind in Pixeln relativ zum Clientbereich des Containeranwendungsfensters.

Die Position des Elements kann mit dem aktuellen Beschneidungsrechteck verglichen werden, um zu bestimmen, inwieweit das Element auf dem Bildschirm sichtbar ist (oder nicht sichtbar).

COleServerDoc::GetZoomFactor

Die GetZoomFactor Memberfunktion bestimmt den "Zoomfaktor" eines Elements, das für die direkte Bearbeitung aktiviert wurde.

BOOL GetZoomFactor(
    LPSIZE lpSizeNum = NULL,
    LPSIZE lpSizeDenom = NULL,
    LPCRECT lpPosRect = NULL) const;

Parameter

lpSizeNum
Zeigen Sie auf ein Objekt der Klasse CSize , das den Zähler des Zoomfaktors enthält. Kann den Wert NULL haben.

lpSizeDenom
Zeigen Sie auf ein Objekt der Klasse CSize , das den Nenner des Zoomfaktors enthält. Kann den Wert NULL haben.

lpPosRect
Zeigen Sie auf ein Objekt der Klasse CRect , das die neue Position des Elements beschreibt. Wenn dieses Argument NULL ist, verwendet die Funktion die aktuelle Position des Elements.

Rückgabewert

Nonzero, wenn das Element für die direkte Bearbeitung aktiviert wird und sein Zoomfaktor nicht 100 % (1:1) ist; andernfalls 0.

Hinweise

Der Zoomfaktor in Pixel ist der Anteil der Größe des Elements bis zum aktuellen Grad. Wenn die Containeranwendung den Umfang des Elements nicht festgelegt hat, wird der natürliche Umfang (wie durch COleServerItem::OnGetExtent bestimmt) verwendet.

Die Funktion legt die ersten beiden Argumente auf den Zähler und nenner des "Zoomfaktors" des Elements fest. Wenn das Element nicht bearbeitet wird, legt die Funktion diese Argumente auf einen Standardwert von 100 % (oder 1:1) fest und gibt Null zurück. Weitere Informationen finden Sie unter Technisches Hinweis 40, MFC/OLE In-Place-Größenänderung und Zoomen.

COleServerDoc::IsDocObject

Bestimmt, ob das Dokument ein DocObject ist.

BOOL IsDocObject() const;

Rückgabewert

TRUE, wenn das Dokument ein DocObject ist; andernfalls FALSE.

COleServerDoc::IsEmbedded

Rufen Sie die IsEmbedded Memberfunktion auf, um zu bestimmen, ob das Dokument ein in einen Container eingebettetes Objekt darstellt.

BOOL IsEmbedded() const;

Rückgabewert

Nonzero, wenn das COleServerDoc Objekt ein Dokument ist, das ein in einen Container eingebettetes Objekt darstellt; andernfalls 0.

Hinweise

Ein aus einer Datei geladenes Dokument ist nicht eingebettet, obwohl es von einer Containeranwendung als Link bearbeitet werden kann. Ein Dokument, das in ein Containerdokument eingebettet ist, wird als eingebettet betrachtet.

COleServerDoc::IsInPlaceActive

Rufen Sie die IsInPlaceActive Memberfunktion auf, um zu bestimmen, ob sich das Element derzeit im aktiven Zustand befindet.

BOOL IsInPlaceActive() const;

Rückgabewert

Nonzero, wenn das COleServerDoc Objekt aktiv ist; andernfalls 0.

COleServerDoc::NotifyChanged

Rufen Sie diese Funktion auf, um alle verknüpften Elemente zu benachrichtigen, die mit dem Dokument verbunden sind, dass das Dokument geändert wurde.

void NotifyChanged();

Hinweise

In der Regel rufen Sie diese Funktion auf, nachdem der Benutzer ein globales Attribut geändert hat, z. B. die Abmessungen des Serverdokuments. Wenn ein OLE-Element mit dem Dokument mit einem automatischen Link verknüpft ist, wird das Element aktualisiert, um die Änderungen widerzuspiegeln. In Containeranwendungen, die mit der Microsoft Foundation Class Library geschrieben wurden, wird die OnChange-Memberfunktion COleClientItem aufgerufen.

Hinweis

Diese Funktion ist aus Gründen der Kompatibilität mit OLE 1 enthalten. Neue Anwendungen sollten UpdateAllItems verwenden.

COleServerDoc::NotifyClosed

Rufen Sie diese Funktion auf, um die Container zu benachrichtigen, dass das Dokument geschlossen wurde.

void NotifyClosed();

Hinweise

Wenn der Benutzer den Befehl "Schließen" aus dem Menü "Datei" auswählt, NotifyClosed wird er von COleServerDocder Implementierung der OnCloseDocument-Memberfunktion aufgerufen. In Containeranwendungen, die mit der Microsoft Foundation Class Library geschrieben wurden, wird die OnChange-Memberfunktion COleClientItem aufgerufen.

COleServerDoc::NotifyRename

Rufen Sie diese Funktion auf, nachdem der Benutzer das Serverdokument umbenannt hat.

void NotifyRename(LPCTSTR lpszNewName);

Parameter

lpszNewName
Zeigen Sie auf eine Zeichenfolge, die den neuen Namen des Serverdokuments angibt. Dies ist in der Regel ein vollqualifizierter Pfad.

Hinweise

Wenn der Benutzer den Befehl "Speichern unter" im Menü "Datei" auswählt, NotifyRename wird die COleServerDocImplementierung der OnSaveDocument-Memberfunktion aufgerufen. Diese Funktion benachrichtigt die OLE-System-DLLs, die wiederum die Container benachrichtigen. In Containeranwendungen, die mit der Microsoft Foundation Class Library geschrieben wurden, wird die OnChange-Memberfunktion COleClientItem aufgerufen.

COleServerDoc::NotifySaved

Rufen Sie diese Funktion auf, nachdem der Benutzer das Serverdokument gespeichert hat.

void NotifySaved();

Hinweise

Wenn der Benutzer den Befehl "Speichern" aus dem Menü "Datei" auswählt, NotifySaved wird sie durch COleServerDocdie Implementierung von OnSaveDocument aufgerufen. Diese Funktion benachrichtigt die OLE-System-DLLs, die wiederum die Container benachrichtigen. In Containeranwendungen, die mit der Microsoft Foundation Class Library geschrieben wurden, wird die OnChange-Memberfunktion COleClientItem aufgerufen.

COleServerDoc::OnClose

Wird vom Framework aufgerufen, wenn ein Container anfordert, dass das Serverdokument geschlossen wird.

virtual void OnClose(OLECLOSE dwCloseOption);

Parameter

dwCloseOption
Ein Wert aus der Enumeration OLECLOSE. Dieser Parameter kann einen der folgenden Werte aufweisen:

  • OLECLOSE_SAVEIFDIRTY Die Datei wird gespeichert, wenn sie geändert wurde.

  • OLECLOSE_NOSAVE Die Datei wird geschlossen, ohne gespeichert zu werden.

  • OLECLOSE_PROMPTSAVE Wenn die Datei geändert wurde, wird der Benutzer zum Speichern aufgefordert.

Hinweise

Die standardmäßigen Implementierungsaufrufe CDocument::OnCloseDocument.

Weitere Informationen und zusätzliche Werte finden Sie unter OLECLOSE im Windows SDK.

COleServerDoc::OnDeactivate

Wird vom Framework aufgerufen, wenn der Benutzer ein eingebettetes oder verknüpftes Element deaktiviert, das derzeit aktiv ist.

virtual void OnDeactivate();

Hinweise

Diese Funktion stellt die Benutzeroberfläche der Containeranwendung in den ursprünglichen Zustand wieder her und zerstört alle Menüs und anderen Steuerelemente, die für die direkte Aktivierung erstellt wurden.

Die Statusinformationen zum Rückgängigmachen sollten an diesem Punkt bedingungslos freigegeben werden.

Weitere Informationen finden Sie im Artikel Activation..

COleServerDoc::OnDeactivateUI

Wird aufgerufen, wenn der Benutzer ein Element deaktiviert, das aktiviert wurde.

virtual void OnDeactivateUI(BOOL bUndoable);

Parameter

bUndoable
Gibt an, ob die Bearbeitungsänderungen rückgängig gemacht werden können.

Hinweise

Diese Funktion stellt die Benutzeroberfläche der Containeranwendung in den ursprünglichen Zustand wieder her, wobei alle Menüs und andere Steuerelemente ausgeblendet werden, die für die direkte Aktivierung erstellt wurden.

Das Framework legt "bUndoable" immer auf FALSE fest. Wenn der Server "Rückgängig" unterstützt und es einen Vorgang gibt, der rückgängig gemacht werden kann, rufen Sie die Basisklassenimplementierung mit bUndoable auf TRUE auf.

COleServerDoc::OnDocWindowActivate

Das Framework ruft diese Funktion auf, um ein Dokumentfenster für die direkte Bearbeitung zu aktivieren oder zu deaktivieren.

virtual void OnDocWindowActivate(BOOL bActivate);

Parameter

bActivate
Gibt an, ob das Dokumentfenster aktiviert oder deaktiviert werden soll.

Hinweise

Die Standardimplementierung entfernt oder fügt die Elemente der Benutzeroberfläche auf Frameebene entsprechend hinzu. Überschreiben Sie diese Funktion, wenn Sie zusätzliche Aktionen ausführen möchten, wenn das Dokument, das Ihr Element enthält, aktiviert oder deaktiviert wird.

Weitere Informationen finden Sie im Artikel Activation..

COleServerDoc::OnExecOleCmd

Das Framework ruft diese Funktion auf, um einen angegebenen Befehl auszuführen oder Hilfe für den Befehl anzuzeigen.

virtual HRESULT OnExecOleCmd(
    const GUID* pguidCmdGroup,
    DWORD nCmdID,
    DWORD nCmdExecOpt,
    VARIANTARG* pvarargIn,
    VARIANTARG* pvarargOut);

Parameter

pguidCmdGroup
Ein Zeiger auf eine GUID, die einen Satz von Befehlen identifiziert. Kann NULL sein, um die Standardbefehlsgruppe anzugeben.

nCmdID
Den auszuführenden Befehl. Muss sich in der Gruppe befinden, die von pguidCmdGroup identifiziert wird.

nCmdExecOut
Die Art und Weise, wie das Objekt den Befehl ausführen soll, einen oder mehrere der folgenden Werte aus der OLECMDEXECOPT-Aufzählung:

OLECMDEXECOPT_DODEFAULT

OLECMDEXECOPT_PROMPTUSER

OLECMDEXECOPT_DONTPROMPTUSER

OLECMDEXECOPT_SHOWHELP

pvarargIn
Zeiger auf eine VARIANTARG, die Eingabeargumente für den Befehl enthält. Kann den Wert NULL haben.

pvarargOut
Zeigen Sie auf einen VARIANTARG-Wert, um die Ausgaberücklaufwerte vom Befehl zu empfangen. Kann den Wert NULL haben.

Rückgabewert

Gibt S_OK zurück, wenn dies erfolgreich ist; andernfalls eine der folgenden Fehlercodes:

Wert Beschreibung
E_UNEXPECTED Unerwarteter Fehler
E_FAIL Fehler
E_NOTIMPL Gibt an, dass MFC selbst versucht, den Befehl zu übersetzen und zu verteilen.
OLECMDERR_E_UNKNOWNGROUP pguidCmdGroup ist nicht NULL, gibt aber keine erkannte Befehlsgruppe an.
OLECMDERR_E_NOTSUPPORTED nCmdID wird nicht als gültiger Befehl in der Gruppe "pguidCmdGroup" erkannt.
OLECMDERR_DISABLED Der durch nCmdID identifizierte Befehl ist deaktiviert und kann nicht ausgeführt werden.
OLECMDERR_NOHELP Der Anrufer hat nach Hilfe zu dem befehl gefragt, der von nCmdID identifiziert wurde, aber keine Hilfe verfügbar ist.
OLECMDERR_CANCELED Der Benutzer hat die Ausführung abgebrochen.

Hinweise

COleCmdUI kann verwendet werden, um andere Eigenschaften von DocObject-Benutzeroberflächenbefehlen zu aktivieren, zu aktualisieren und festzulegen. Nachdem die Befehle initialisiert wurden, können Sie sie mit OnExecOleCmd.

Das Framework ruft die Funktion auf, bevor Sie versuchen, einen OLE-Dokumentbefehl zu übersetzen und zu verteilen. Sie müssen diese Funktion nicht außer Kraft setzen, um standardmäßige OLE-Dokumentbefehle zu verarbeiten, aber Sie müssen eine Außerkraftsetzung für diese Funktion bereitstellen, wenn Sie eigene benutzerdefinierte Befehle behandeln oder Befehle behandeln möchten, die Parameter akzeptieren oder Ergebnisse zurückgeben.

Die meisten Befehle verwenden keine Argumente oder Rückgabewerte. Für einen Großteil der Befehle kann der Aufrufer NULLs für pvarargIn und pvarargOut übergeben. Für Befehle, die Eingabewerte erwarten, kann der Aufrufer eine VARIANTARG-Variable deklarieren und initialisieren und einen Zeiger an die Variable in pvarargIn übergeben. Bei Befehlen, die einen einzelnen Wert erfordern, kann das Argument direkt in der VARIANTARG gespeichert und an die Funktion übergeben werden. Mehrere Argumente müssen mit einem der unterstützten Typen (z IDispatch . B. SAFEARRAY) innerhalb der VARIANTARG gepackt werden.

Wenn ein Befehl Argumente zurückgibt, wird erwartet, dass ein VARIANTARG deklariert, an VT_EMPTY initialisiert und seine Adresse in pvarargOut übergeben wird. Wenn ein Befehl einen einzelnen Wert zurückgibt, kann das Objekt diesen Wert direkt in pvarargOut speichern. Mehrere Ausgabewerte müssen in irgendeiner Weise verpackt werden, die für VARIANTARG geeignet ist.

Die Implementierung dieser Funktion der Basisklasse führt zu den OLE_COMMAND_MAP Strukturen, die dem Befehlsziel zugeordnet sind, und versucht, den Befehl an einen entsprechenden Handler zu verteilen. Die Implementierung der Basisklasse funktioniert nur mit Befehlen, die keine Argumente akzeptieren oder Werte zurückgeben. Wenn Sie Befehle behandeln müssen, die Argumente akzeptieren oder Werte zurückgeben, müssen Sie diese Funktion überschreiben und mit den PvarargIn - und pvarargOut-Parametern selbst arbeiten.

COleServerDoc::OnFrameWindowActivate

Das Framework ruft diese Funktion auf, wenn das Framefenster der Containeranwendung aktiviert oder deaktiviert wird.

virtual void OnFrameWindowActivate(BOOL bActivate);

Parameter

bActivate
Gibt an, ob das Rahmenfenster aktiviert oder deaktiviert werden soll.

Hinweise

Die Standardimplementierung bricht alle Hilfemodi ab, in denen sich das Framefenster möglicherweise befindet. Überschreiben Sie diese Funktion, wenn Sie eine spezielle Verarbeitung ausführen möchten, wenn das Framefenster aktiviert oder deaktiviert wird.

Weitere Informationen finden Sie im Artikel Activation..

COleServerDoc::OnGetEmbeddedItem

Wird vom Framework aufgerufen, wenn eine Containeranwendung die Serveranwendung aufruft, um ein eingebettetes Element zu erstellen oder zu bearbeiten.

virtual COleServerItem* OnGetEmbeddedItem() = 0;

Rückgabewert

Ein Zeiger auf ein Element, das das gesamte Dokument darstellt; NULL, wenn der Vorgang fehlgeschlagen ist.

Hinweise

Es ist keine Standardimplementierung vorhanden. Sie müssen diese Funktion außer Kraft setzen, um ein Element zurückzugeben, das das gesamte Dokument darstellt. Dieser Rückgabewert sollte ein Objekt einer COleServerItemabgeleiteten Klasse sein.

COleServerDoc::OnReactivateAndUndo

Das Framework ruft diese Funktion auf, wenn der Benutzer änderungen rückgängig macht, die an einem Element vorgenommen wurden, das aktiviert, geändert und anschließend deaktiviert wurde.

virtual BOOL OnReactivateAndUndo();

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Die Standardimplementierung führt nichts anderes aus, als FALSE zurückzugeben, um fehler anzuzeigen.

Überschreiben Sie diese Funktion, wenn Ihre Anwendung "Rückgängig" unterstützt. In der Regel führen Sie den Rückgängig-Vorgang aus, und aktivieren Sie dann das Element durch Aufrufen ActivateInPlace. Wenn die Containeranwendung mit der Microsoft Foundation Class Library geschrieben wird, wird diese Funktion aufgerufen COleClientItem::ReactivateAndUndo .

COleServerDoc::OnResizeBorder

Das Framework ruft diese Funktion auf, wenn die Framefenster der Containeranwendung die Größe ändern.

virtual void OnResizeBorder(
    LPCRECT lpRectBorder,
    LPOLEINPLACEUIWINDOW lpUIWindow,
    BOOL bFrame);

Parameter

lpRectBorder
Zeigen Sie auf eine RECT Struktur oder ein CRect Objekt, das die Koordinaten des Rahmens angibt.

lpUIWindow
Zeigen Sie auf ein Objekt der Klasse IOleInPlaceUIWindow , das die aktuelle direkte Bearbeitungssitzung besitzt.

bFrame
TRUE, wenn lpUIWindow auf das Framefenster der obersten Ebene der Containeranwendung verweist, oder FALSE, wenn lpUIWindow auf das Framefenster der Containeranwendung zeigt.

Hinweise

Diese Funktion ändert die Größe und passt Symbolleisten und andere Benutzeroberflächenelemente entsprechend der neuen Fenstergröße an.

Weitere Informationen finden Sie unter "IOleInPlaceUIWindow " im Windows SDK.

Dies ist eine erweiterte Außerkraftsetzung.

COleServerDoc::OnSetHostNames

Wird vom Framework aufgerufen, wenn der Container die Hostnamen für dieses Dokument festlegt oder ändert.

virtual void OnSetHostNames(
    LPCTSTR lpszHost,
    LPCTSTR lpszHostObj);

Parameter

lpszHost
Zeigen Sie auf eine Zeichenfolge, die den Namen der Containeranwendung angibt.

lpszHostObj
Zeigen Sie auf eine Zeichenfolge, die den Namen des Containers für das Dokument angibt.

Hinweise

Die Standardimplementierung ändert den Dokumenttitel für alle Ansichten, die auf dieses Dokument verweisen.

Überschreiben Sie diese Funktion, wenn Ihre Anwendung die Titel über einen anderen Mechanismus festlegt.

COleServerDoc::OnSetItemRects

Das Framework ruft diese Funktion auf, um das direkte Bearbeitungsrahmenfenster innerhalb des Framefensters der Containeranwendung zu positionieren.

virtual void OnSetItemRects(
    LPCRECT lpPosRect,
    LPCRECT lpClipRect);

Parameter

lpPosRect
Zeigen Sie auf eine RECT Struktur oder ein CRect Objekt, das die Position des direkten Framefensters relativ zum Clientbereich der Containeranwendung angibt.

lpClipRect
Zeigen Sie auf eine RECT Struktur oder ein CRect Objekt, das das Beschneidungsrechteck des direkten Rahmenfensters relativ zum Clientbereich der Containeranwendung angibt.

Hinweise

Überschreiben Sie diese Funktion, um den Zoomfaktor der Ansicht bei Bedarf zu aktualisieren.

Diese Funktion wird in der Regel als Reaktion auf einen RequestPositionChange Aufruf aufgerufen, obwohl sie jederzeit vom Container aufgerufen werden kann, um eine Positionsänderung für das direkte Element anzufordern.

COleServerDoc::OnShowControlBars

Das Framework ruft diese Funktion auf, um die Steuerleisten der Serveranwendung anzuzeigen oder auszublenden, die dem von pFrameWnd identifizierten Framefenster zugeordnet sind.

virtual void OnShowControlBars(
    CFrameWnd* pFrameWnd,
    BOOL bShow);

Parameter

pFrameWnd
Zeigen Sie auf das Rahmenfenster, dessen Steuerleisten ausgeblendet oder angezeigt werden sollen.

bShow
Bestimmt, ob Steuerleisten angezeigt oder ausgeblendet werden.

Hinweise

Die Standardimplementierung listet alle Steuerleisten auf, die sich im Besitz dieses Framefensters befinden, und blendet sie aus oder zeigt sie an.

COleServerDoc::OnShowDocument

Das Framework ruft die OnShowDocument Funktion auf, wenn das Serverdokument ausgeblendet oder angezeigt werden muss.

virtual void OnShowDocument(BOOL bShow);

Parameter

bShow
Gibt an, ob die Benutzeroberfläche für das Dokument angezeigt oder ausgeblendet werden soll.

Hinweise

Wenn bShow WAHR ist, aktiviert die Standardimplementierung die Serveranwendung, falls erforderlich, und bewirkt, dass die Containeranwendung im Fenster scrollt, sodass das Element sichtbar ist. Wenn bShow FALSCH ist, deaktiviert die Standardimplementierung das Element über einen Aufruf OnDeactivatevon , zerstört oder blendet alle Framefenster aus, die für das Dokument erstellt wurden, mit Ausnahme der ersten. Wenn keine sichtbaren Dokumente verbleiben, blendet die Standardimplementierung die Serveranwendung aus.

COleServerDoc::OnUpdateDocument

Wird vom Framework beim Speichern eines Dokuments aufgerufen, das ein eingebettetes Element in einem zusammengesetzten Dokument ist.

virtual BOOL OnUpdateDocument();

Rückgabewert

Nonzero, wenn das Dokument erfolgreich aktualisiert wurde; andernfalls 0.

Hinweise

Die Standardimplementierung ruft die COleServerDoc::NotifySaved - und COleServerDoc::SaveEmbedding-Memberfunktionen auf und markiert das Dokument dann als sauber. Überschreiben Sie diese Funktion, wenn Sie beim Aktualisieren eines eingebetteten Elements eine spezielle Verarbeitung durchführen möchten.

COleServerDoc::RequestPositionChange

Rufen Sie diese Memberfunktion auf, damit die Containeranwendung die Position des Elements ändert.

void RequestPositionChange(LPCRECT lpPosRect);

Parameter

lpPosRect
Zeigen Sie auf eine RECT Struktur oder ein CRect Objekt, das die neue Position des Elements enthält.

Hinweise

Diese Funktion wird in der Regel (in Verbindung mit UpdateAllItems) aufgerufen, wenn sich die Daten in einem direkten aktiven Element geändert haben. Nach diesem Aufruf kann der Container die Änderung durch Aufrufen OnSetItemRectsausführen. Die resultierende Position kann sich von der angeforderten position unterscheiden.

COleServerDoc::SaveEmbedding

Rufen Sie diese Funktion auf, um der Containeranwendung mitzuteilen, dass das eingebettete Objekt gespeichert wird.

void SaveEmbedding();

Hinweise

Diese Funktion wird automatisch von OnUpdateDocument. Beachten Sie, dass die Funktion bewirkt, dass das Element auf dem Datenträger aktualisiert wird, sodass es normalerweise nur als Ergebnis einer bestimmten Benutzeraktion aufgerufen wird.

COleServerDoc::ScrollContainerBy

Rufen Sie die ScrollContainerBy Memberfunktion auf, um das Containerdokument um die Menge in Pixeln zu scrollen, die durch sizeScroll.

BOOL ScrollContainerBy(CSize sizeScroll);

Parameter

sizeScroll
Gibt an, wie weit das Containerdokument scrollen soll.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Positive Werte deuten darauf hin, dass der Bildlauf nach unten und nach rechts verschoben wird. Negative Werte deuten auf den Bildlauf nach oben und nach links hin hin.

COleServerDoc::UpdateAllItems

Rufen Sie diese Funktion auf, um alle verknüpften Elemente zu benachrichtigen, die mit dem Dokument verbunden sind, dass das Dokument geändert wurde.

void UpdateAllItems(
    COleServerItem* pSender,
    LPARAM lHint = 0L,
    CObject* pHint = NULL,
    DVASPECT nDrawAspect = DVASPECT_CONTENT);

Parameter

pSender
Zeigen Sie auf das Element, das das Dokument geändert hat, oder NULL, wenn alle Elemente aktualisiert werden sollen.

lHint
Enthält Informationen zur Änderung.

pHint
Zeigen Sie auf ein Objekt, das Informationen zur Änderung speichert.

nDrawAspect
Bestimmt, wie das Element gezeichnet werden soll. Dies ist ein Wert aus der DVASPECT-Aufzählung. Dieser Parameter kann einen der folgenden Werte aufweisen:

  • DVASPECT_CONTENT Element wird so dargestellt, dass es als eingebettetes Objekt innerhalb des Containers angezeigt werden kann.

  • DVASPECT_THUMBNAIL Element wird in einer "Miniaturansicht"-Darstellung gerendert, sodass es in einem Browsertool angezeigt werden kann.

  • DVASPECT_ICON Element wird durch ein Symbol dargestellt.

  • DVASPECT_DOCPRINT Element wird so dargestellt, als ob es mit dem Befehl "Drucken" aus dem Menü "Datei" gedruckt wurde.

Hinweise

Sie rufen diese Funktion in der Regel auf, nachdem der Benutzer das Serverdokument geändert hat. Wenn ein OLE-Element mit dem Dokument mit einem automatischen Link verknüpft ist, wird das Element aktualisiert, um die Änderungen widerzuspiegeln. In Containeranwendungen, die mit der Microsoft Foundation Class Library geschrieben wurden, wird die OnChange-Memberfunktion COleClientItem aufgerufen.

Diese Funktion ruft die OnUpdate Memberfunktion für jedes Element des Dokuments auf, mit Ausnahme des sendenden Elements, übergeben pHint, lHint und nDrawAspect. Verwenden Sie diese Parameter, um Informationen an die Elemente zu den änderungen an dem Dokument vorgenommenen Änderungen zu übergeben. Sie können Informationen mithilfe von "lHint " codieren oder eine abgeleitete CObjectKlasse definieren, um Informationen zu den Änderungen zu speichern und ein Objekt dieser Klasse mithilfe von pHint zu übergeben. Überschreiben Sie die OnUpdate Memberfunktion in der COleServerItemabgeleiteten Klasse, um die Aktualisierung der einzelnen Elemente zu optimieren, je nachdem, ob sich die Präsentation geändert hat.

Siehe auch

MFC-Beispiel HIERSVR
COleLinkingDoc-Klasse
Hierarchiediagramm
COleDocument-Klasse
COleLinkingDoc-Klasse
COleTemplateServer-Klasse