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 COleServerDoc
Klasse für jeden Serverdokumenttyp, den Ihre Anwendung unterstützt. Wenn Ihre Serveranwendung beispielsweise Arbeitsblätter und Diagramme unterstützt, benötigen Sie zwei COleServerDoc
abgeleitete Klassen.
Weitere Informationen zu Servern finden Sie im Artikel "Server: Implementieren eines Servers".
Vererbungshierarchie
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 COleLinkingDoc
die Implementierung von OnNewDocument
, , OnOpenDocument
und 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 COleServerDoc
der 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 COleServerDoc
Implementierung 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 COleServerDoc
die 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 COleServerItem
abgeleiteten 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 OnDeactivate
von , 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 OnSetItemRects
ausfü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 CObject
Klasse 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 COleServerItem
abgeleiteten 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