Udostępnij za pośrednictwem


Serwery: elementy serwera

Gdy kontener uruchamia serwer, aby użytkownik mógł edytować osadzony lub połączony element OLE, aplikacja serwera tworzy "element serwera". Element serwera, który jest obiektem klasy pochodzącej z COleServerItemklasy , zapewnia interfejs między dokumentem serwera a aplikacją kontenera.

Klasa COleServerItem definiuje kilka funkcji składowych, które można zastąpić, które są wywoływane przez OLE, zwykle w odpowiedzi na żądania z kontenera. Elementy serwera mogą reprezentować część dokumentu serwera lub cały dokument. Gdy element OLE jest osadzony w dokumencie kontenera, element serwera reprezentuje cały dokument serwera. Gdy element OLE jest połączony, element serwera może reprezentować część dokumentu serwera lub cały dokument, w zależności od tego, czy łącze jest częścią, czy z całością.

Na przykład w przykładzie HIERSVR klasa CServerItemelementu serwera ma element członkowski, który jest wskaźnikiem do obiektu klasy CServerNode. Obiekt CServerNode jest węzłem w dokumencie aplikacji HIERSVR, który jest drzewem. CServerNode Gdy obiekt jest węzłem głównym, CServerItem obiekt reprezentuje cały dokument. CServerNode Gdy obiekt jest węzłem podrzędnym, CServerItem obiekt reprezentuje część dokumentu. Zobacz przykładowy interfejs HIERSVR MFC OLE, aby zapoznać się z przykładem tej interakcji.

Implementowanie elementów serwera

Jeśli używasz kreatora aplikacji do tworzenia kodu "starter" dla aplikacji, wszystko, co musisz zrobić, aby uwzględnić elementy serwera w kodzie startowym, to wybrać jedną z opcji serwera na stronie Opcje OLE. Jeśli dodasz elementy serwera do istniejącej aplikacji, wykonaj następujące kroki:

Aby zaimplementować element serwera

  1. Tworzenie klasy z COleServerItemklasy .

  2. W klasie pochodnej zastąp funkcję składową OnDraw .

    Wywołania OnDraw struktury umożliwiające renderowanie elementu OLE w metapliku. Aplikacja kontenera używa tego metapliku do renderowania elementu. Klasa widoków aplikacji ma również funkcję składową OnDraw , która jest używana do renderowania elementu, gdy aplikacja serwera jest aktywna.

  3. Zaimplementuj OnGetEmbeddedItem przesłonięcia dla klasy dokumentów serwera. Aby uzyskać więcej informacji, zobacz artykuł Serwery: implementowanie dokumentów serwera i przykładowe MFC OLE HIERSVR.

  4. Zaimplementuj OnGetExtent funkcję składową klasy elementów serwera. Struktura wywołuje tę funkcję, aby pobrać rozmiar elementu. Domyślna implementacja nic nie robi.

Porada dotycząca architektury elementu serwera

Jak wspomniano w temacie Implementowanie elementów serwera, aplikacje serwera muszą mieć możliwość renderowania elementów zarówno w widoku serwera, jak i w metapliku używanym przez aplikację kontenera. W architekturze aplikacji biblioteki klas programu Microsoft Foundation funkcja składowa klasy OnDraw widoku renderuje element podczas jego edycji (zobacz CView::OnDraw w dokumentacji biblioteki klas). Element OnDraw serwera renderuje element w metapliku we wszystkich innych przypadkach (zobacz COleServerItem::OnDraw).

Można uniknąć duplikowania kodu, pisząc funkcje pomocnicze w klasie dokumentów serwera i wywołując je z OnDraw funkcji w klasach widoków i elementów serwera. Przykładowy interfejs HIERSVR MFC używa tej strategii: funkcji CServerView::OnDraw i CServerItem::OnDraw obu wywołań CServerDoc::DrawTree w celu renderowania elementu.

Widok i element mają OnDraw funkcje składowe, ponieważ rysują się w różnych warunkach. Widok musi uwzględniać takie czynniki jak powiększanie, rozmiar zaznaczenia i zakres, wycinanie i elementy interfejsu użytkownika, takie jak paski przewijania. Z drugiej strony element serwera zawsze rysuje cały obiekt OLE.

Aby uzyskać więcej informacji, zobacz CView::OnDraw, COleServerItem, COleServerItem::OnDraw i COleServerDoc::OnGetEmbeddedItem w dokumentacji biblioteki klas.

Zobacz też

Serwery