Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 dotyczy części, czy całego dokumentu.
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
Odprowadź klasę z
COleServerItem.W swojej klasie pochodnej, przesłoń funkcję składową
OnDraw.Framework wywołuje
OnDraww celu renderowania 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.Zaimplementuj
OnGetEmbeddedItemprzesłonięcia dla klasy dokumentów serwera. Aby uzyskać więcej informacji, zobacz artykuł Serwery: Implementowanie dokumentów serwera oraz przykład MFC OLE HIERSVR.Zaimplementuj
OnGetExtentfunkcję 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 Server-Item
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 generuje element jako plik metadanych w pozostałych 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ładowa aplikacja OLE MFC HIERSVR korzysta z tej strategii: funkcje CServerView::OnDraw i CServerItem::OnDraw obie wywołują CServerDoc::DrawTree, aby przetworzyć element.
Widok i element mają funkcje członkowskie OnDraw, ponieważ działają w różnych warunkach. Widok musi uwzględniać takie czynniki jak powiększanie, rozmiar oraz zakres zaznaczenia, wycinanie oraz 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.