Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Die Microsoft Foundation Classes (MFC)-Bibliothek wird weiterhin unterstützt. Wir fügen jedoch keine Features mehr hinzu oder aktualisieren die Dokumentation.
Wenn ein Container einen Server startet, damit ein Benutzer ein eingebettetes oder verknüpftes OLE-Element bearbeiten kann, erstellt die Serveranwendung ein "Serverelement". Das Serverelement, das ein Objekt einer von einer Klasse abgeleitet COleServerItemist, stellt eine Schnittstelle zwischen dem Serverdokument und der Containeranwendung bereit.
Die COleServerItem-Klasse definiert mehrere überschreibbare Memberfunktionen, die von OLE aufgerufen werden, in der Regel als Reaktion auf Container-Anfragen. Serverelemente können Einen Teil des Serverdokuments oder des gesamten Dokuments darstellen. Wenn ein OLE-Element in das Containerdokument eingebettet ist, stellt das Serverelement das gesamte Serverdokument dar. Wenn das OLE-Element verknüpft ist, kann das Serverelement einen Teil des Serverdokuments oder des gesamten Dokuments darstellen, je nachdem, ob die Verknüpfung mit einem Teil oder mit dem Ganzen besteht.
Im HIERSVR-Beispiel , z. B. die Serverelementklasse, hat ein Element, CServerItemdas ein Zeiger auf ein Objekt der Klasse CServerNodeist. Das CServerNode Objekt ist ein Knoten im HIERSVR-Anwendungsdokument, das ein Baum ist. Wenn das CServerNode Objekt der Stammknoten ist, stellt das CServerItem Objekt das gesamte Dokument dar. Wenn das CServerNode Objekt ein untergeordneter Knoten ist, stellt das CServerItem Objekt einen Teil des Dokuments dar. Ein Beispiel für diese Interaktion finden Sie im MFC OLE-Beispiel HIERSVR .
Implementieren von Serverelementen
Wenn Sie den Anwendungsassistenten verwenden, um "Starter" -Code für Ihre Anwendung zu erstellen, müssen Sie nur eine der Serveroptionen auf der Seite OLE-Optionen auswählen, um Serverelemente in Ihren Startercode aufzunehmen. Wenn Sie einer vorhandenen Anwendung Serverelemente hinzufügen, führen Sie die folgenden Schritte aus:
So implementieren Sie ein Serverelement
Leiten Sie eine Klasse von
COleServerItemab.Überschreiben Sie in Ihrer abgeleiteten Klasse die
OnDrawElementfunktion.Das Framework ruft
OnDrawauf, um das OLE-Element in einer Metadatei zu rendern. Die Containeranwendung verwendet diese Metadatei, um das Element zu rendern. Die Ansichtsklasse Ihrer Anwendung verfügt auch über eineOnDrawMemberfunktion, die verwendet wird, um das Element zu rendern, wenn die Serveranwendung aktiv ist.Implementieren Sie eine Außerkraftsetzung von
OnGetEmbeddedItemfür Ihre Server-Dokument-Klasse. Weitere Informationen finden Sie im Artikel Server: Implementieren von Serverdokumenten und dem MFC OLE-Beispiel HIERSVR.Implementieren Sie die
OnGetExtentMitgliedsfunktion Ihrer Server-Item-Klasse. Das Framework ruft diese Funktion auf, um die Größe des Elements abzurufen. Bei der Standardimplementierung wird keine Aktion ausgeführt.
Ein Tipp für Server-Item Architektur
Wie bei der Implementierung von Serverelementen erwähnt, müssen Serveranwendungen elemente sowohl in der Ansicht des Servers als auch in einer von der Containeranwendung verwendeten Metadatei rendern können. In der Anwendungsarchitektur der Microsoft Foundation-Klassenbibliothek rendert die Memberfunktion der Ansichtsklasse OnDraw das Element, wenn es bearbeitet wird (siehe CView::OnDraw in der Klassenbibliotheksreferenz). Das Serverelement OnDraw stellt das Element in allen anderen Fällen in einer Metadatei dar (siehe COleServerItem::OnDraw).
Sie können die Duplizierung von Code vermeiden, indem Sie Hilfsfunktionen in Ihre Server-Dokumentklasse schreiben und sie aus den OnDraw Funktionen in Ihrer Ansicht und Server-Item-Klassen aufrufen. Das MFC OLE-Beispiel HIERSVR verwendet diese Strategie: die Funktionen CServerView::OnDraw und CServerItem::OnDraw rufen beide CServerDoc::DrawTree auf, um das Element zu rendern.
Die Ansicht und das Element haben beide OnDraw Mitgliederfunktionen, da sie unter unterschiedlichen Bedingungen zeichnen. Die Ansicht muss Faktoren wie Zoom, Auswahlgröße und -ausdehnung, Clipping und Benutzeroberflächenelemente wie Bildlaufleisten berücksichtigen. Das Serverelement zeichnet dagegen immer das gesamte OLE-Objekt.
Weitere Informationen finden Sie unter "CView::OnDraw", "COleServerItem", "COleServerItem::OnDraw" und "COleServerDoc::OnGetEmbeddedItem" in der Klassenbibliotheksreferenz.