Freigeben über


COleServerItem-Klasse

Stellt die Serverschnittstelle zu OLE-Elementen bereit.

Syntax

class COleServerItem : public CDocItem

Member

Geschützte Konstruktoren

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

Öffentliche Methoden

Name Beschreibung
COleServerItem::AddOtherClipboardData Platziert Präsentations- und Konvertierungsformate in einem COleDataSource Objekt.
COleServerItem::CopyToClipboard Kopiert das Element in die Zwischenablage.
COleServerItem::D oDragDrop Führt einen Drag-and-Drop-Vorgang aus.
COleServerItem::GetClipboardData Ruft die Datenquelle für die Verwendung in der Datenübertragung ab (Ziehen und Ablegen oder Zwischenablage).
COleServerItem::GetDocument Gibt das Serverdokument zurück, das das Element enthält.
COleServerItem::GetEmbedSourceData Ruft die CF_EMBEDSOURCE Daten für ein OLE-Element ab.
COleServerItem::GetItemName Gibt den Namen des Elements zurück. Wird nur für verknüpfte Elemente verwendet.
COleServerItem::GetLinkSourceData Ruft die CF_LINKSOURCE Daten für ein OLE-Element ab.
COleServerItem::GetObjectDescriptorData Ruft die CF_OBJECTDESCRIPTOR Daten für ein OLE-Element ab.
COleServerItem::Is Verbinden ed Gibt an, ob das Element derzeit an einen aktiven Container angefügt ist.
COleServerItem::IsLinkedItem Gibt an, ob das Element ein verknüpftes OLE-Element darstellt.
COleServerItem::NotifyChanged Aktualisiert alle Container mit automatischer Linkaktualisierung.
COleServerItem::OnDoVerb Wird aufgerufen, um ein Verb auszuführen.
COleServerItem::OnDraw Wird aufgerufen, wenn der Container anfordert, das Element zu zeichnen; Implementierung erforderlich.
COleServerItem::OnDrawEx Für spezielle Elementzeichnung aufgerufen.
COleServerItem::OnGetClipboardData Vom Framework aufgerufen, um die Daten abzurufen, die in die Zwischenablage kopiert werden.
COleServerItem::OnGetExtent Vom Framework aufgerufen, um die Größe des OLE-Elements abzurufen.
COleServerItem::OnInitFromData Wird vom Framework aufgerufen, um ein OLE-Element mithilfe des Inhalts des angegebenen Datenübertragungsobjekts zu initialisieren.
COleServerItem::OnQueryUpdateItems Wird aufgerufen, um festzustellen, ob verknüpfte Elemente aktualisiert werden müssen.
COleServerItem::OnRenderData Ruft Daten als Teil des verzögerten Renderings ab.
COleServerItem::OnRenderFileData Ruft Daten als Teil des verzögerten Renderings in ein CFile Objekt ab.
COleServerItem::OnRenderGlobalData Ruft Daten als Teil des verzögerten Renderings in ein HGLOBAL ab.
COleServerItem::OnSetColorScheme Wird aufgerufen, um das Farbschema des Elements festzulegen.
COleServerItem::OnSetData Wird aufgerufen, um die Daten des Elements festzulegen.
COleServerItem::OnSetExtent Vom Framework aufgerufen, um die Größe des OLE-Elements festzulegen.
COleServerItem::OnUpdate Wird aufgerufen, wenn ein Teil des Dokuments, in das das Element gehört, geändert wird.
COleServerItem::OnUpdateItems Wird aufgerufen, um den Präsentationscache aller Elemente im Serverdokument zu aktualisieren.
COleServerItem::SetItemName Legt den Namen des Elements fest. Wird nur für verknüpfte Elemente verwendet.

Geschützte Methoden

Name Beschreibung
COleServerItem::GetDataSource Ruft das Objekt ab, das zum Speichern von Konvertierungsformaten verwendet wird.
COleServerItem::OnHide Vom Framework aufgerufen, um das OLE-Element auszublenden.
COleServerItem::OnOpen Wird vom Framework aufgerufen, um das OLE-Element in einem eigenen Fenster der obersten Ebene anzuzeigen.
COleServerItem::OnShow Wird aufgerufen, wenn der Container anfordert, das Element anzuzeigen.

Öffentliche Datenmember

Name Beschreibung
COleServerItem::m_sizeExtent Informiert den Server darüber, wie viel des OLE-Elements sichtbar ist.

Hinweise

Ein verknüpftes Element kann einige oder alle eines Serverdokuments darstellen. Ein eingebettetes Element stellt immer ein gesamtes Serverdokument dar.

Die COleServerItem Klasse definiert mehrere überschreibbare Memberfunktionen, die von den DYNAMIC Link Libraries (DLLs) des OLE-Systems aufgerufen werden, in der Regel als Reaktion auf Anforderungen von der Containeranwendung. Diese Memberfunktionen ermöglichen es der Containeranwendung, das Element indirekt auf verschiedene Weise zu bearbeiten, z. B. durch Anzeigen, Ausführen der Verben oder Abrufen der Daten in verschiedenen Formaten.

Um eine Klasse zu verwenden COleServerItem, leiten Sie eine Klasse davon ab, und implementieren Sie die Memberfunktionen OnDraw und Serialisieren . Die OnDraw Funktion stellt die Metadateidarstellung eines Elements bereit, sodass es angezeigt werden kann, wenn eine Containeranwendung ein zusammengesetztes Dokument öffnet. Die Serialize Funktion stellt CObject die systemeigene Darstellung eines Elements bereit, sodass ein eingebettetes Element zwischen server- und containeranwendungen übertragen werden kann. OnGetExtent stellt die natürliche Größe des Elements für den Container bereit, sodass der Container das Element vergrößern kann.

Weitere Informationen zu Servern und verwandten Themen finden Sie im Artikel "Server: Implementieren eines Servers und "Erstellen einer Container-/Serveranwendung" im Artikel "Container: Erweiterte Features".

Vererbungshierarchie

CObject

CCmdTarget

CDocItem

COleServerItem

Anforderungen

Kopfzeile: afxole.h

COleServerItem::AddOtherClipboardData

Rufen Sie diese Funktion auf, um die Präsentations- und Konvertierungsformate für das OLE-Element im angegebenen COleDataSource Objekt zu platzieren.

void AddOtherClipboardData(COleDataSource* pDataSource);

Parameter

pDataSource
Zeigen Sie auf das COleDataSource Objekt, in dem die Daten platziert werden sollen.

Hinweise

Sie müssen die OnDraw-Memberfunktion implementiert haben, um das Präsentationsformat (ein Metadateibild) für das Element bereitzustellen. Um andere Konvertierungsformate zu unterstützen, registrieren Sie sie mithilfe des von GetDataSource zurückgegebenen COleDataSource-Objekts, und überschreiben Sie die OnRenderData-Memberfunktion, um Daten in den Formaten bereitzustellen, die Sie unterstützen möchten.

COleServerItem::COleServerItem

Erstellt ein COleServerItem Objekt und fügt es der Auflistung von Dokumentelementen des Serverdokuments hinzu.

COleServerItem(
    COleServerDoc* pServerDoc,
    BOOL bAutoDelete);

Parameter

pServerDoc
Zeigen Sie auf das Dokument, das das neue Element enthält.

bAutoDelete
Flag, das angibt, ob das Objekt gelöscht werden kann, wenn ein Link zu dem Objekt freigegeben wird. Legen Sie diesen Wert auf FALSE fest, wenn das COleServerItem Objekt ein integraler Bestandteil der Daten Ihres Dokuments ist, die Sie löschen müssen. Legen Sie diesen Wert auf TRUE fest, wenn es sich bei dem Objekt um eine sekundäre Struktur handelt, die verwendet wird, um einen Bereich in den Daten Ihres Dokuments zu identifizieren, die vom Framework gelöscht werden können.

COleServerItem::CopyToClipboard

Rufen Sie diese Funktion auf, um das OLE-Element in die Zwischenablage zu kopieren.

void CopyToClipboard(BOOL bIncludeLink = FALSE);

Parameter

bIncludeLink
Legen Sie diesen Wert auf TRUE fest, wenn Verknüpfungsdaten in die Zwischenablage kopiert werden sollen. Legen Sie diesen Wert auf FALSE fest, wenn die Serveranwendung keine Links unterstützt.

Hinweise

Die Funktion verwendet die OnGetClipboardData-Memberfunktion , um ein COleDataSource-Objekt zu erstellen, das die Daten des OLE-Elements in den unterstützten Formaten enthält. Anschließend platziert die Funktion das COleDataSource Objekt in der Zwischenablage mithilfe der COleDataSource::SetClipboard-Funktion . Das COleDataSource Objekt enthält die systemeigenen Daten des Elements und seine Darstellung im CF_METAFILEPICT Format sowie Daten in allen Konvertierungsformaten, die Sie unterstützen möchten. Sie müssen Serialisieren und OnDraw implementiert haben, damit diese Memberfunktion funktioniert.

COleServerItem::D oDragDrop

Rufen Sie die DoDragDrop Memberfunktion auf, um einen Drag-and-Drop-Vorgang auszuführen.

DROPEFFECT DoDragDrop(
    LPCRECT lpRectItem,
    CPoint ptOffset,
    BOOL bIncludeLink = FALSE,
    DWORD dwEffects = DROPEFFECT_COPY | DROPEFFECT_MOVE,
    LPCRECT lpRectStartDrag = NULL);

Parameter

lpRectItem
Das Rechteck des Elements auf dem Bildschirm relativ zum Clientbereich in Pixel.

ptOffset
Der Offset von lpItemRect , bei dem sich die Mausposition zum Zeitpunkt des Ziehens befand.

bIncludeLink
Legen Sie diesen Wert auf TRUE fest, wenn Verknüpfungsdaten in die Zwischenablage kopiert werden sollen. Legen Sie ihn auf FALSE fest, wenn Ihre Anwendung Keine Links unterstützt.

dwEffects
Bestimmt die Effekte, die die Ziehquelle im Ziehvorgang zulässt (eine Kombination aus Kopieren, Verschieben und Verknüpfen).

lpRectStartDrag
Zeiger auf das Rechteck, das definiert, wo der Ziehvorgang tatsächlich beginnt. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".

Rückgabewert

Ein Wert aus der DROPEFFECT-Aufzählung. Wenn es DROPEFFECT_MOVE ist, sollten die ursprünglichen Daten entfernt werden.

Hinweise

Der Drag-and-Drop-Vorgang wird nicht sofort gestartet. Es wartet, bis der Mauscursor das durch lpRectStartDrag angegebene Rechteck verlässt oder bis eine angegebene Anzahl von Millisekunden übergeben wurde. Wenn lpRectStartDrag NULL ist, wird ein Standardrechteck verwendet, sodass das Ziehen gestartet wird, wenn der Mauscursor ein Pixel bewegt.

Die Verzögerungszeit wird durch eine Registrierungsschlüsseleinstellung angegeben. Sie können die Verzögerungszeit ändern, indem Sie CWinApp::WriteProfileString oder CWinApp::WriteProfileInt aufrufen. Wenn Sie die Verzögerungszeit nicht angeben, wird ein Standardwert von 200 Millisekunden verwendet. Die Verzögerungszeit des Ziehens wird wie folgt gespeichert:

  • Die Verzögerungszeit des Windows NT-Ziehens wird in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\NT\CurrentVersion\IniFileMapping\win.ini\Windows\DragDelay gespeichert.

  • Die Verzögerungszeit von Windows 3.x wird im WIN gespeichert. INI-Datei unter dem Abschnitt [Windows}

  • Windows 95/98 Ziehverzögerungszeit wird in einer zwischengespeicherten Version von WIN gespeichert. INI.

Weitere Informationen dazu, wie Ziehverzögerungsinformationen entweder in der Registrierung oder in der Registrierung gespeichert werden. INI-Datei finden Sie unter WriteProfileString im Windows SDK.

COleServerItem::GetClipboardData

Rufen Sie diese Funktion auf, um das angegebene COleDataSource-Objekt mit allen Daten zu füllen, die in die Zwischenablage kopiert würden, wenn Sie "CopyToClipboard" aufgerufen haben (die gleichen Daten würden auch übertragen, wenn Sie DoDragDrop genannt haben).

void GetClipboardData(
    COleDataSource* pDataSource,
    BOOL bIncludeLink = FALSE,
    LPPOINT lpOffset = NULL,
    LPSIZE lpSize = NULL);

Parameter

pDataSource
Zeigen Sie auf das COleDataSource Objekt, das die DATEN des OLE-Elements in allen unterstützten Formaten empfängt.

bIncludeLink
TRUE, wenn Verknüpfungsdaten in die Zwischenablage kopiert werden sollen. FALSE, wenn die Serveranwendung Keine Links unterstützt.

lpOffset
Der Offset (in Pixel) des Mauscursors vom Ursprung des Objekts.

lpSize
Die Größe des Objekts in Pixel.

Hinweise

Diese Funktion ruft die GetEmbedSourceData-Memberfunktion auf, um die systemeigenen Daten für das OLE-Element abzurufen, und ruft die AddOtherClipboardData-Memberfunktion auf, um das Präsentationsformat und alle unterstützten Konvertierungsformate abzurufen. Wenn bIncludeLink TRUE ist, ruft die Funktion auch GetLinkSourceData auf, um die Verknüpfungsdaten für das Element abzurufen.

Überschreiben Sie diese Funktion, wenn Sie Formate in ein COleDataSource Objekt vor oder nach diesen formaten einfügen möchten, die von CopyToClipboard.

COleServerItem::GetDataSource

Rufen Sie diese Funktion auf, um das COleDataSource-Objekt abzurufen, das zum Speichern der von der Serveranwendung unterstützten Konvertierungsformate verwendet wird.

COleDataSource* GetDataSource();

Rückgabewert

Ein Zeiger auf das Objekt, das COleDataSource zum Speichern der Konvertierungsformate verwendet wird.

Hinweise

Wenn Ihre Serveranwendung Daten in einer Vielzahl von Formaten während der Datenübertragung anbieten soll, registrieren Sie diese Formate mit dem COleDataSource von dieser Funktion zurückgegebenen Objekt. Wenn Sie z. B. eine CF_TEXT Darstellung des OLE-Elements für Zwischenablage- oder Drag-and-Drop-Vorgänge bereitstellen möchten, registrieren Sie das Format beim COleDataSource zurückgegebenen Objekt, und überschreiben Sie dann die OnRenderXxxData Memberfunktion, um die Daten bereitzustellen.

COleServerItem::GetDocument

Rufen Sie diese Funktion auf, um einen Zeiger auf das Dokument abzurufen, das das Element enthält.

COleServerDoc* GetDocument() const;

Rückgabewert

Ein Zeiger auf das Dokument, das das Element enthält; NULL, wenn das Element nicht Teil eines Dokuments ist.

Hinweise

Dies ermöglicht den Zugriff auf das Serverdokument, das Sie als Argument an den COleServerItem Konstruktor übergeben haben.

COleServerItem::GetEmbedSourceData

Rufen Sie diese Funktion auf, um die CF_EMBEDSOURCE Daten für ein OLE-Element abzurufen.

void GetEmbedSourceData(LPSTGMEDIUM lpStgMedium);

Parameter

lpStgMedium
Zeiger auf die STGMEDIUM-Struktur , die die CF_EMBEDSOURCE Daten für das OLE-Element empfängt.

Hinweise

Dieses Format enthält die systemeigenen Daten des Elements. Sie müssen die Serialize Memberfunktion implementiert haben, damit diese Funktion ordnungsgemäß funktioniert.

Das Ergebnis kann dann mithilfe von COleDataSource::CacheData zu einer Datenquelle hinzugefügt werden. Diese Funktion wird automatisch von COleServerItem::OnGetClipboardData aufgerufen.

Weitere Informationen finden Sie unter STGMEDIUM im Windows SDK.

COleServerItem::GetItemName

Rufen Sie diese Funktion auf, um den Namen des Elements abzurufen.

const CString& GetItemName() const;

Rückgabewert

Name des Elements.

Hinweise

Normalerweise rufen Sie diese Funktion nur für verknüpfte Elemente auf.

COleServerItem::GetLinkSourceData

Rufen Sie diese Funktion auf, um die CF_LINKSOURCE Daten für ein OLE-Element abzurufen.

BOOL GetLinkSourceData(LPSTGMEDIUM lpStgMedium);

Parameter

lpStgMedium
Zeiger auf die STGMEDIUM-Struktur , die die CF_LINKSOURCE Daten für das OLE-Element empfängt.

Rückgabewert

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

Hinweise

Dieses Format enthält die CLSID, die den Typ des OLE-Elements und die Informationen beschreibt, die zum Suchen des Dokuments mit dem OLE-Element erforderlich sind.

Das Ergebnis kann dann einer Datenquelle mit COleDataSource::CacheData hinzugefügt werden. Diese Funktion wird automatisch von OnGetClipboardData aufgerufen.

Weitere Informationen finden Sie unter STGMEDIUM im Windows SDK.

COleServerItem::GetObjectDescriptorData

Rufen Sie diese Funktion auf, um die CF_OBJECTDESCRIPTOR Daten für ein OLE-Element abzurufen.

void GetObjectDescriptorData(
    LPPOINT lpOffset,
    LPSIZE lpSize,
    LPSTGMEDIUM lpStgMedium);

Parameter

lpOffset
Offset des Mausklicks aus der oberen linken Ecke des OLE-Elements. Kann den Wert NULL haben.

lpSize
Größe des OLE-Elements. Kann den Wert NULL haben.

lpStgMedium
Zeiger auf die STGMEDIUM-Struktur , die die CF_OBJECTDESCRIPTOR Daten für das OLE-Element empfängt.

Hinweise

Die Informationen werden in die Struktur kopiert, auf die STGMEDIUM lpStgMedium verweist. Dieses Format enthält die informationen, die für das Dialogfeld "Inhalte einfügen" erforderlich sind.

Weitere Informationen finden Sie unter STGMEDIUM im Windows SDK.

COleServerItem::Is Verbinden ed

Rufen Sie diese Funktion auf, um festzustellen, ob das OLE-Element verbunden ist.

BOOL IsConnected() const;

Rückgabewert

Nonzero, wenn das Element verbunden ist; andernfalls 0.

Hinweise

Ein OLE-Element wird als verbunden betrachtet, wenn mindestens ein Container Verweise auf das Element enthält. Ein Element ist verbunden, wenn die Referenzanzahl größer als 0 ist oder wenn es sich um ein eingebettetes Element handelt.

COleServerItem::IsLinkedItem

Rufen Sie diese Funktion auf, um festzustellen, ob das OLE-Element ein verknüpftes Element ist.

BOOL IsLinkedItem() const;

Rückgabewert

Nonzero, wenn das Element ein verknüpftes Element ist; andernfalls 0.

Hinweise

Ein Element ist verknüpft, wenn das Element gültig ist und nicht in der Liste der eingebetteten Elemente des Dokuments zurückgegeben wird. Ein verknüpftes Element kann oder nicht mit einem Container verbunden sein.

Es ist üblich, die gleiche Klasse sowohl für verknüpfte als auch für eingebettete Elemente zu verwenden. IsLinkedItem Ermöglicht es Ihnen, verknüpfte Elemente anders zu gestalten als eingebettete Elemente, obwohl häufig der Code häufig verwendet wird.

COleServerItem::m_sizeExtent

Dieses Element teilt dem Server mit, wie viel des Objekts im Containerdokument sichtbar ist.

CSize m_sizeExtent;

Hinweise

Die Standardimplementierung von OnSetExtent legt diesen Member fest.

COleServerItem::NotifyChanged

Rufen Sie diese Funktion auf, nachdem das verknüpfte Element geändert wurde.

void NotifyChanged(DVASPECT nDrawAspect = DVASPECT_CONTENT);

Parameter

nDrawAspect
Ein Wert aus der DVASPECT-Aufzählung, der angibt, welcher Aspekt des OLE-Elements geändert wurde. 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

Wenn ein Containerelement 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 COleClientItem::OnChange als Antwort aufgerufen.

COleServerItem::OnDoVerb

Vom Framework aufgerufen, um das angegebene Verb auszuführen.

virtual void OnDoVerb(LONG iVerb);

Parameter

iVerb
Gibt das auszuführende Verb an. Dies kann eine der folgenden Aktionen sein:

Wert Bedeutung Symbol
0 Primäres Verb OLEIVERB_PRIMARY
1 Sekundäres Verb (Keine)
- 1 Element zum Bearbeiten anzeigen OLEIVERB_SHOW
- 2 Element in separatem Fenster bearbeiten OLEIVERB_OPEN
- 3 Element ausblenden OLEIVERB_HIDE

Der -1-Wert ist in der Regel ein Alias für ein anderes Verb. Wenn die Bearbeitung nicht unterstützt wird, hat -2 die gleiche Wirkung wie -1. Weitere Werte finden Sie unter "IOleObject::D oVerb " im Windows SDK.

Hinweise

Wenn die Containeranwendung mit der Microsoft Foundation Class Library geschrieben wurde, wird diese Funktion aufgerufen, wenn die COleClientItem::Activate-Memberfunktion des entsprechenden COleClientItem Objekts aufgerufen wird. Die Standardimplementierung ruft die OnShow-Memberfunktion auf, wenn das primäre Verb oder OLEIVERB_SHOW angegeben ist, OnOpen, wenn das sekundäre Verb oder OLEIVERB_OPEN angegeben ist, und OnHide, wenn OLEIVERB_HIDE angegeben wird. Die Standardimplementierung ruft auf OnShow , wenn iVerb keins der oben aufgeführten Verben ist.

Überschreiben Sie diese Funktion, wenn das primäre Verb das Element nicht enthält. Wenn es sich bei dem Element beispielsweise um eine Soundaufzeichnung handelt und das primäre Verb "Wiedergeben" lautet, müssten Sie die Serveranwendung nicht anzeigen, um das Element wiederzugeben.

Weitere Informationen finden Sie unter "IOleObject::D oVerb " im Windows SDK.

COleServerItem::OnDraw

Vom Framework aufgerufen, um das OLE-Element in einer Metadatei zu rendern.

virtual BOOL OnDraw(
    CDC* pDC,
    CSize& rSize) = 0;

Parameter

pDC
Ein Zeiger auf das CDC-Objekt , auf dem das Element gezeichnet werden soll. Der Anzeigekontext wird automatisch mit dem Attributanzeigekontext verbunden, sodass Sie Attributfunktionen aufrufen können, obwohl dies die Metadatei gerätespezifisch macht.

rSize
Größe in HIMETRIC-Einheiten, in denen die Metadatei gezeichnet werden soll.

Rückgabewert

Nonzero, wenn das Element erfolgreich gezeichnet wurde; andernfalls 0.

Hinweise

Die Metadateidarstellung des OLE-Elements wird verwendet, um das Element in der Containeranwendung anzuzeigen. Wenn die Containeranwendung mit der Microsoft Foundation Class Library geschrieben wurde, wird die Metadatei von der Draw-Memberfunktion des entsprechenden COleClientItem-Objekts verwendet. Es ist keine Standardimplementierung vorhanden. Sie müssen diese Funktion außer Kraft setzen, um das Element in den angegebenen Gerätekontext zu zeichnen.

COleServerItem::OnDrawEx

Wird vom Framework für alle Zeichnungen aufgerufen.

virtual BOOL OnDrawEx(
    CDC* pDC,
    DVASPECT nDrawAspect,
    CSize& rSize);

Parameter

pDC
Ein Zeiger auf das CDC-Objekt , auf dem das Element gezeichnet werden soll. Der DC wird automatisch mit dem Attribut DC verbunden, sodass Sie Attributfunktionen aufrufen können, obwohl dies die Metadatei gerätespezifisch machen würde.

nDrawAspect
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.

rSize
Größe des Elements in HIMETRIC-Einheiten.

Rückgabewert

Nonzero, wenn das Element erfolgreich gezeichnet wurde; andernfalls 0.

Hinweise

Die Standardimplementierung wird aufgerufen OnDraw , wenn DVASPECT gleich DVASPECT_CONTENT ist. Andernfalls schlägt sie fehl.

Überschreiben Sie diese Funktion, um Präsentationsdaten für andere Aspekte als DVASPECT_CONTENT bereitzustellen, z. B. DVASPECT_ICON oder DVASPECT_THUMBNAIL.

COleServerItem::OnGetClipboardData

Wird vom Framework aufgerufen, um ein COleDataSource Objekt abzurufen, das alle Daten enthält, die durch einen Aufruf der CopyToClipboard-Memberfunktion in der Zwischenablage platziert würden.

virtual COleDataSource* OnGetClipboardData(
    BOOL bIncludeLink,
    LPPOINT lpOffset,
    LPSIZE lpSize);

Parameter

bIncludeLink
Legen Sie diesen Wert auf TRUE fest, wenn Verknüpfungsdaten in die Zwischenablage kopiert werden sollen. Legen Sie diesen Wert auf FALSE fest, wenn die Serveranwendung keine Links unterstützt.

lpOffset
Der Offset des Mauscursors vom Ursprung des Objekts in Pixeln.

lpSize
Die Größe des Objekts in Pixel.

Rückgabewert

Ein Zeiger auf ein COleDataSource-Objekt , das die Zwischenablagedaten enthält.

Hinweise

Die Standardimplementierung dieser Funktion ruft GetClipboardData auf.

COleServerItem::OnGetExtent

Vom Framework aufgerufen, um die Größe des OLE-Elements in HIMETRIC-Einheiten abzurufen.

virtual BOOL OnGetExtent(
    DVASPECT nDrawAspect,
    CSize& rSize);

Parameter

nDrawAspect
Gibt den Aspekt des OLE-Elements an, dessen Grenzen abgerufen werden sollen. 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.

rSize
Verweisen auf ein CSize Objekt, das die Größe des OLE-Elements erhält.

Rückgabewert

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

Hinweise

Wenn die Containeranwendung mit der Microsoft Foundation Class Library geschrieben wurde, wird diese Funktion aufgerufen, wenn die GetExtent-Memberfunktion des entsprechenden COleClientItem Objekts aufgerufen wird. Bei der Standardimplementierung wird keine Aktion ausgeführt. Sie müssen sie selbst implementieren. Überschreiben Sie diese Funktion, wenn Sie beim Behandeln einer Anforderung für die Größe des OLE-Elements eine spezielle Verarbeitung durchführen möchten.

COleServerItem::OnHide

Vom Framework aufgerufen, um das OLE-Element auszublenden.

virtual void OnHide();

Hinweise

Die Standardaufrufe COleServerDoc::OnShowDocument( FALSE ). Die Funktion benachrichtigt außerdem den Container, dass das OLE-Element ausgeblendet wurde. Überschreiben Sie diese Funktion, wenn Sie beim Ausblenden eines OLE-Elements eine spezielle Verarbeitung durchführen möchten.

COleServerItem::OnInitFromData

Wird vom Framework aufgerufen, um ein OLE-Element mithilfe des Inhalts von pDataObject zu initialisieren.

virtual BOOL OnInitFromData(
    COleDataObject* pDataObject,
    BOOL bCreation);

Parameter

pDataObject
Zeiger auf ein OLE-Datenobjekt, das Daten in verschiedenen Formaten zum Initialisieren des OLE-Elements enthält.

bCreation
TRUE, wenn die Funktion aufgerufen wird, um ein OLE-Element zu initialisieren, das neu von einer Containeranwendung erstellt wird. FALSE, wenn die Funktion aufgerufen wird, um den Inhalt eines bereits vorhandenen OLE-Elements zu ersetzen.

Rückgabewert

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

Hinweise

Wenn "bCreation " WAHR ist, wird diese Funktion aufgerufen, wenn ein Container "Neues Objekt einfügen" basierend auf der aktuellen Auswahl implementiert. Die ausgewählten Daten werden beim Erstellen des neuen OLE-Elements verwendet. Wenn Sie beispielsweise einen Zellbereich in einem Tabellenkalkulationsprogramm auswählen und dann das Neue Objekt einfügen verwenden, um ein Diagramm basierend auf den Werten im ausgewählten Bereich zu erstellen. Bei der Standardimplementierung wird keine Aktion ausgeführt. Überschreiben Sie diese Funktion, um ein akzeptables Format aus den von pDataObject angebotenen Formaten auszuwählen und das OLE-Element basierend auf den bereitgestellten Daten zu initialisieren. Dies ist eine erweiterte Außerkraftsetzung.

Weitere Informationen finden Sie unter "IOleObject::InitFromData " im Windows SDK.

COleServerItem::OnOpen

Wird vom Framework aufgerufen, um das OLE-Element in einer separaten Instanz der Serveranwendung anzuzeigen, anstatt an Ort und Stelle.

virtual void OnOpen();

Hinweise

Die Standardimplementierung aktiviert das erste Framefenster, in dem das Dokument mit dem OLE-Element angezeigt wird. Wenn es sich bei der Anwendung um einen Miniserver handelt, wird in der Standardimplementierung das Standard Fenster angezeigt. Die Funktion benachrichtigt außerdem den Container, dass das OLE-Element geöffnet wurde.

Überschreiben Sie diese Funktion, wenn Sie beim Öffnen eines OLE-Elements eine spezielle Verarbeitung durchführen möchten. Dies gilt insbesondere für verknüpfte Elemente, bei denen Sie die Auswahl beim Öffnen auf den Link festlegen möchten.

Weitere Informationen finden Sie unter "IOleClientSite::OnShowWindow " im Windows SDK.

COleServerItem::OnQueryUpdateItems

Wird vom Framework aufgerufen, um zu bestimmen, ob verknüpfte Elemente im aktuellen Serverdokument veraltet sind.

virtual BOOL OnQueryUpdateItems();

Rückgabewert

Nonzero, wenn das Dokument Elemente enthält, die Aktualisierungen benötigen; 0, wenn alle Elemente auf dem neuesten Stand sind.

Hinweise

Ein Element ist veraltet, wenn das Quelldokument geändert wurde, das verknüpfte Element jedoch nicht aktualisiert wurde, um die Änderungen im Dokument widerzuspiegeln.

COleServerItem::OnRenderData

Vom Framework aufgerufen, um Daten im angegebenen Format abzurufen.

virtual BOOL OnRenderData(
    LPFORMATETC lpFormatEtc,
    LPSTGMEDIUM lpStgMedium);

Parameter

lpFormatEtc
Verweist auf die FORMATTC-Struktur , die das Format angibt, in dem Informationen angefordert werden.

lpStgMedium
Verweist auf eine STGMEDIUM-Struktur , in der die Daten zurückgegeben werden sollen.

Rückgabewert

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

Hinweise

Das angegebene Format ist eine zuvor im COleDataSource Objekt platzierte Elementfunktion DelayRenderData oder DelayRenderFileData für das verzögerte Rendering. Die Standardimplementierung dieser Funktion ruft OnRenderFileData oder OnRenderGlobalData auf, wenn das angegebene Speichermedium entweder eine Datei oder ein Speicher ist. Wenn keines dieser Formate bereitgestellt wird, gibt die Standardimplementierung "0" zurück und führt nichts aus.

Wenn lpStgMedium-tymed> TYMED_NULL ist, sollte das STGMEDIUM gemäß der Angabe von lpFormatEtc-tymed> zugeordnet und ausgefüllt werden. Wenn nicht TYMED_NULL, sollte das STGMEDIUM mit den Daten ausgefüllt werden.

Dies ist eine erweiterte Außerkraftsetzung. Überschreiben Sie diese Funktion, um Ihre Daten im angeforderten Format und Medium bereitzustellen. Je nach Ihren Daten sollten Sie stattdessen eine der anderen Versionen dieser Funktion außer Kraft setzen. Wenn Ihre Daten klein und in der Größe festgelegt sind, überschreiben OnRenderGlobalDataSie dies. Wenn sich Die Daten in einer Datei befinden oder eine variable Größe aufweisen, überschreiben OnRenderFileDataSie diese.

Weitere Informationen finden Sie unter "IDataObject::GetData", "STGMEDIUM", "FORMATETC" und "TYMED " im Windows SDK.

COleServerItem::OnRenderFileData

Wird vom Framework aufgerufen, um Daten im angegebenen Format abzurufen, wenn das Speichermedium eine Datei ist.

virtual BOOL OnRenderFileData(
    LPFORMATETC lpFormatEtc,
    CFile* pFile);

Parameter

lpFormatEtc
Verweist auf die FORMATTC-Struktur , die das Format angibt, in dem Informationen angefordert werden.

pFile
Verweist auf ein CFile Objekt, in dem die Daten gerendert werden sollen.

Rückgabewert

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

Hinweise

Das angegebene Format ist eines, das COleDataSource zuvor im Objekt platziert wurde, indem die DelayRenderData-Memberfunktion für das verzögerte Rendering verwendet wird. Die Standardimplementierung dieser Funktion gibt einfach FALSE zurück.

Dies ist eine erweiterte Außerkraftsetzung. Überschreiben Sie diese Funktion, um Ihre Daten im angeforderten Format und Medium bereitzustellen. Je nach Ihren Daten sollten Sie stattdessen eine der anderen Versionen dieser Funktion außer Kraft setzen. Wenn Sie mehrere Speichermedien behandeln möchten, überschreiben Sie OnRenderData. Wenn sich Ihre Daten in einer Datei befinden oder eine variable Größe aufweisen, überschreiben Sie OnRenderFileData.

Weitere Informationen finden Sie unter "IDataObject::GetData " und "FORMATETC " im Windows SDK.

COleServerItem::OnRenderGlobalData

Wird vom Framework aufgerufen, um Daten im angegebenen Format abzurufen, wenn das angegebene Speichermedium globaler Speicher ist.

virtual BOOL OnRenderGlobalData(
    LPFORMATETC lpFormatEtc,
    HGLOBAL* phGlobal);

Parameter

lpFormatEtc
Verweist auf die FORMATTC-Struktur , die das Format angibt, in dem Informationen angefordert werden.

phGlobal
Verweist auf ein Handle auf den globalen Speicher, in dem die Daten zurückgegeben werden sollen. Wenn kein Arbeitsspeicher zugewiesen wurde, kann dieser Parameter NULL sein.

Rückgabewert

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

Hinweise

Das angegebene Format ist eines, das COleDataSource zuvor im Objekt platziert wurde, indem die DelayRenderData-Memberfunktion für das verzögerte Rendering verwendet wird. Die Standardimplementierung dieser Funktion gibt einfach FALSE zurück.

Wenn phGlobal NULL ist, sollte ein neuer HGLOBAL zugeordnet und in phGlobal zurückgegeben werden. Andernfalls sollte der von phGlobal angegebene HGLOBAL mit den Daten gefüllt werden. Die Im HGLOBAL platzierte Datenmenge darf die aktuelle Größe des Speicherblocks nicht überschreiten. Außerdem kann der Block nicht in eine größere Größe umgestellt werden.

Dies ist eine erweiterte Außerkraftsetzung. Überschreiben Sie diese Funktion, um Ihre Daten im angeforderten Format und Medium bereitzustellen. Je nach Ihren Daten sollten Sie stattdessen eine der anderen Versionen dieser Funktion außer Kraft setzen. Wenn Sie mehrere Speichermedien behandeln möchten, überschreiben Sie OnRenderData. Wenn sich Ihre Daten in einer Datei befinden oder eine variable Größe aufweisen, überschreiben Sie OnRenderFileData.

Weitere Informationen finden Sie unter "IDataObject::GetData " und "FORMATETC " im Windows SDK.

COleServerItem::OnSetColorScheme

Vom Framework aufgerufen, um eine Farbpalette anzugeben, die beim Bearbeiten des OLE-Elements verwendet werden soll.

virtual BOOL OnSetColorScheme(const LOGPALETTE* lpLogPalette);

Parameter

lpLogPalette
Zeiger auf eine Windows LOGPALETTE-Struktur .

Rückgabewert

Nonzero, wenn die Farbpalette verwendet wird; andernfalls 0.

Hinweise

Wenn die Containeranwendung mithilfe der Microsoft Foundation Class Library geschrieben wurde, wird diese Funktion aufgerufen, wenn die Funktion "IOleObject::SetColorScheme " des entsprechenden COleClientItem Objekts aufgerufen wird. Die Standardimplementierung gibt FALSE zurück. Überschreiben Sie diese Funktion, wenn Sie die empfohlene Palette verwenden möchten. Die Serveranwendung ist nicht erforderlich, um die vorgeschlagene Palette zu verwenden.

Weitere Informationen finden Sie unter "IOleObject::SetColorScheme " im Windows SDK.

COleServerItem::OnSetData

Vom Framework aufgerufen, um die Daten des OLE-Elements durch die angegebenen Daten zu ersetzen.

virtual BOOL OnSetData(
    LPFORMATETC lpFormatEtc,
    LPSTGMEDIUM lpStgMedium,
    BOOL bRelease);

Parameter

lpFormatEtc
Zeigen Sie auf eine FORMATTC-Struktur , die das Format der Daten angibt.

lpStgMedium
Zeiger auf eine STGMEDIUM-Struktur , in der sich die Daten befinden.

bRelease
Gibt an, wer nach Abschluss des Funktionsaufrufs über den Besitz des Speichermediums verfügt. Der Anrufer entscheidet, wer für die Freigabe der im Auftrag des Speichermediums zugewiesenen Ressourcen verantwortlich ist. Der Aufrufer führt dies durch Festlegen von bRelease aus. Wenn bRelease nicht null ist, übernimmt das Serverelement den Besitz, wobei das Medium freigegeben wird, wenn es die Verwendung abgeschlossen hat. Wenn bRelease 0 ist, behält der Aufrufer den Besitz bei, und das Serverelement kann das Speichermedium nur für die Dauer des Anrufs verwenden.

Rückgabewert

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

Hinweise

Das Serverelement übernimmt erst dann den Besitz der Daten, wenn es erfolgreich abgerufen wurde. Das heißt, es übernimmt keinen Besitz, wenn er "0" zurückgibt. Wenn die Datenquelle den Besitz übernimmt, wird das Speichermedium durch Aufrufen der ReleaseStgMedium-Funktion freigegeben.

Bei der Standardimplementierung wird keine Aktion ausgeführt. Überschreiben Sie diese Funktion, um die Daten des OLE-Elements durch die angegebenen Daten zu ersetzen. Dies ist eine erweiterte Außerkraftsetzung.

Weitere Informationen finden Sie unter STGMEDIUM, FORMATETC und ReleaseStgMedium im Windows SDK.

COleServerItem::OnSetExtent

Wird vom Framework aufgerufen, um dem OLE-Element mitzuteilen, wie viel Speicherplatz für es im Containerdokument verfügbar ist.

virtual BOOL OnSetExtent(
    DVASPECT nDrawAspect,
    const CSize& size);

Parameter

nDrawAspect
Gibt den Aspekt des OLE-Elements an, dessen Grenzen angegeben werden. 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.

size
Eine CSize-Struktur , die die neue Größe des OLE-Elements angibt.

Rückgabewert

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

Hinweise

Wenn die Containeranwendung mit der Microsoft Foundation Class Library geschrieben wurde, wird diese Funktion aufgerufen, wenn die SetExtent-Memberfunktion des entsprechenden COleClientItem Objekts aufgerufen wird. Die Standardimplementierung legt den m_sizeExtent Member auf die angegebene Größe fest, wenn nDrawAspect DVASPECT_CONTENT ist. Andernfalls wird 0 zurückgegeben. Überschreiben Sie diese Funktion, um eine spezielle Verarbeitung durchzuführen, wenn Sie die Größe des Elements ändern.

COleServerItem::OnShow

Vom Framework aufgerufen, um die Serveranwendung anzuweisen, das OLE-Element an Ort und Stelle anzuzeigen.

virtual void OnShow();

Hinweise

Diese Funktion wird in der Regel aufgerufen, wenn der Benutzer der Containeranwendung ein Element erstellt oder ein Verb wie "Bearbeiten" ausführt, für das das Element angezeigt werden muss. Die standardmäßige Implementierung versucht die direkte Aktivierung. Wenn dies fehlschlägt, ruft die Funktion die OnOpen Memberfunktion auf, um das OLE-Element in einem separaten Fenster anzuzeigen.

Überschreiben Sie diese Funktion, wenn Sie eine spezielle Verarbeitung ausführen möchten, wenn ein OLE-Element angezeigt wird.

COleServerItem::OnUpdate

Wird vom Framework aufgerufen, wenn ein Element geändert wurde.

virtual void OnUpdate(
    COleServerItem* pSender,
    LPARAM lHint,
    CObject* pHint,
    DVASPECT nDrawAspect);

Parameter

pSender
Zeigen Sie auf das Element, das das Dokument geändert hat. Kann den Wert NULL haben.

lHint
Enthält Informationen zur Änderung.

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

nDrawAspect
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

Die Standardimplementierung ruft NotifyChanged unabhängig vom Hinweis oder Absender auf.

COleServerItem::OnUpdateItems

Vom Framework aufgerufen, um alle Elemente im Serverdokument zu aktualisieren.

virtual void OnUpdateItems();

Hinweise

Die Standardimplementierung ruft UpdateLink für alle COleClientItem Objekte im Dokument auf.

COleServerItem::SetItemName

Rufen Sie diese Funktion auf, wenn Sie ein verknüpftes Element erstellen, um seinen Namen festzulegen.

void SetItemName(LPCTSTR lpszItemName);

Parameter

lpszItemName
Zeigen Sie auf den neuen Namen des Elements.

Hinweise

Der Name muss innerhalb des Dokuments eindeutig sein. Wenn eine Serveranwendung aufgerufen wird, um ein verknüpftes Element zu bearbeiten, verwendet die Anwendung diesen Namen, um das Element zu finden. Sie müssen diese Funktion nicht für eingebettete Elemente aufrufen.

Siehe auch

MFC-Beispiel HIERSVR
CDocItem-Klasse
Hierarchiediagramm
COleClientItem-Klasse
COleServerDoc-Klasse
COleTemplateServer-Klasse