Server: Server-Elemente

Wenn ein Container ein Server gestartet wird, damit ein Benutzer ein verknüpftes oder eingebettetes OLE-Element bearbeiten kann, erstellt die Serveranwendung ein Serverelement "." Im Serverelement, das ein Objekt einer Klasse ist, die von COleServerItem abgeleitet ist, stellt eine Schnittstelle zwischen dem Server und der Containeranwendung wird.

Die COleServerItem-Klasse definiert eine Reihe von überschreibbaren Memberfunktionen, die in OLE aufgerufen werden, normalerweise als Reaktion auf Anforderungen aus dem Container.Serverelemente können dokuments Teil des Servers oder des gesamten Dokuments dargestellt.Wenn ein OLE-Element im Containerdokument eingebettet ist, stellt das Serverelement das gesamte Server Dokument dar.Wenn das OLE-Element verknüpft ist, kann das Serverelement ein Teil des Servers dokuments oder des gesamten dokuments darstellen, je nachdem, ob der Link zu einem Part oder zum Ganzen ist.

Im HIERSVR z. B. die SERVER Element Klasse, CServerItem, weist auf einen Member hin, der einen Zeiger auf ein Objekt der Klasse CServerNode ist.Das CServerNode-Objekt ist ein Knoten im Dokument der HIERSVR-Anwendung, das eine Struktur ist.Wenn das CServerNode-Objekt den Stammknoten ist, stellt das CServerItem-Objekt das gesamte Dokument dar.Wenn das CServerNode-Objekt ist ein untergeordneter Knoten darstellt, das CServerItem-Objekt einen Teil des Dokuments.Weitere Informationen finden Sie im Beispiel HIERSVR OLE MFC als ein Beispiel für diese Interaktion.

Server-Elemente implementieren

Wenn Sie im Anwendungs-Assistenten verwenden, um "Starter" Code für die Anwendung zu erstellen, ist aller, den Sie ausführen müssen, um Serverelemente im Startcode eingeschlossen, eine der Optionen für den Server aus der OLE-Optionsseite auszuwählen.Wenn Sie Serverelemente in einer vorhandenen Anwendung hinzufügen, führen Sie die folgenden Schritte aus:

So fügen Sie ein Serverelement implementieren

  1. Leiten Sie eine Klasse von COleServerItem ab.

  2. In der abgeleiteten Klasse überschreiben Sie die OnDraw-Memberfunktion.

    Das Framework ruft OnDraw auf, um das OLE-Element in einer Metadatei zu rendern.Die Containeranwendung verwendet diese Metadatei, um das Element zu rendern.Die Ansichtsklasse der Anwendung verfügt auch über eine OnDraw-Memberfunktion, die verwendet wird, um das Element zu rendern, wenn die Serveranwendung aktiv ist.

  3. Implementieren Sie eine Überschreibung von OnGetEmbeddedItem für die SERVER DOCUMENT-Klasse.Weitere Informationen finden Sie im Artikel Server: Implementieren Server-Dokumente und das Beispiel HIERSVR MFC OLE.

  4. Implementieren Sie OnGetExtent-Memberfunktion der SERVER - Klasse.Das Framework ruft diese Funktion auf, um die Größe des Elements abzurufen.Bei der Standardimplementierung wird keine Aktion ausgeführt.

Ein Spitze für SERVER-Element Architektur

Wie in Server-Elemente implementieren erwähnt, müssen Serveranwendungen in der Lage sein, beide Elemente in der Ansicht des Servers und in einer Metadatei zu rendern, die von der Containeranwendung verwendet wird.In der Microsoft Foundation Class Library Anwendungsarchitektur OnDraw Ansicht rendert die der Memberfunktion Klasse das Element, wenn es geändert wurde (siehe CView::OnDraw im Klassenbibliotheks-Verweis).OnDraw des Servers Elements rendert das Element in einer Metadatei in allen anderen Fällen (siehe COleServerItem::OnDraw).

Sie können Duplikat des Codes vermeiden, indem Sie Hilfsfunktionen in der SERVER DOCUMENT-Klasse schreiben und sie von den OnDraw-Funktionen in den Ansichts- und SERVER Elementklassen aufrufen.Im Beispiel HIERSVR MFC OLE verwendet diese Strategie: CServerView::OnDraw die Funktionen und CServerItem::OnDraw beide rufen CServerDoc::DrawTree aufgerufen, um das Element zu rendern.

Die Ansicht und das Element verfügen über OnDraw-Memberfunktionen, da sie unter verschiedenen Bedingungen zeichnen.Die Sicht muss diese Faktoren wie das Zoomen Größe, Auswahlmöglichkeiten und Clipping und - Block, wie Elemente einer Bildlaufleiste berücksichtigen.Im Serverelement hingegen immer zeichnet das gesamte OLE-Objekt.

Weitere Informationen finden Sie unter CView::OnDraw, COleServerItem, COleServerItem::OnDraw und COleServerDoc::OnGetEmbeddedItem im Klassenbibliotheks-Verweis.

Siehe auch

Konzepte

Server