Servery: Serverové položky
Když kontejner spustí server, aby uživatel mohl upravit vloženou nebo propojenou položku OLE, serverová aplikace vytvoří položku serveru. Položka serveru, která je objektem třídy odvozené z COleServerItem
, poskytuje rozhraní mezi dokumentem serveru a kontejnerovou aplikací.
Třída COleServerItem
definuje několik přepisovatelných členských funkcí, které jsou volány OLE, obvykle v reakci na požadavky z kontejneru. Položky serveru můžou představovat část dokumentu serveru nebo celý dokument. Pokud je položka OLE vložena do dokumentu kontejneru, položka serveru představuje celý serverový dokument. Při propojení položky OLE může položka serveru představovat část dokumentu serveru nebo celý dokument v závislosti na tom, zda je odkaz na část nebo celek.
V ukázce HIERSVR , například třída server-item , CServerItem
má člen, který je ukazatel na objekt třídy CServerNode
. Objekt CServerNode
je uzel v dokumentu aplikace HIERSVR, což je strom. CServerNode
Pokud je objekt kořenovým uzlem, CServerItem
představuje objekt celý dokument. CServerNode
Pokud je objekt podřízeným uzlem, CServerItem
představuje objekt část dokumentu. Příklad této interakce najdete v ukázce TECHNOLOGIE MFC OLE HIERSVR .
Implementace položek serveru
Pokud použijete průvodce aplikací k vytvoření počátečního kódu pro vaši aplikaci, stačí zahrnout položky serveru do počátečního kódu, je vybrat jednu z možností serveru ze stránky Možnosti OLE. Pokud přidáváte položky serveru do existující aplikace, proveďte následující kroky:
Implementace položky serveru
Odvození třídy z
COleServerItem
.V odvozené třídě přepište členovu
OnDraw
funkci.Volání rozhraní
OnDraw
pro vykreslení položky OLE do metasouboru. Aplikace kontejneru používá tento metasoubor k vykreslení položky. Třída zobrazení aplikace má také členskouOnDraw
funkci, která slouží k vykreslení položky, když je serverová aplikace aktivní.Implementujte přepsání
OnGetEmbeddedItem
pro třídu dokumentů serveru. Další informace najdete v článku Servery: Implementace dokumentů serveru a ukázka TECHNOLOGIE MFC OLE HIERSVR.Implementujte členskou
OnGetExtent
funkci třídy server-item. Architektura volá tuto funkci k načtení velikosti položky. Výchozí implementace nic nedělá.
Tip pro architekturu položek serveru
Jak je uvedeno v implementaci položek serveru, serverové aplikace musí být schopné vykreslovat položky v zobrazení serveru i v metasouboru používaném aplikací kontejneru. V aplikační architektuře knihovny tříd Microsoft Foundation vykresluje členská funkce třídy view OnDraw
položku při úpravě (viz CView::OnDraw v referenční dokumentaci knihovny tříd). Položka OnDraw
serveru vykreslí položku do metasouboru ve všech ostatních případech (viz COleServerItem::OnDraw).
Duplikaci kódu se můžete vyhnout tím, že napíšete pomocné funkce ve třídě dokumentu serveru a zavoláte je z OnDraw
funkcí v zobrazení a třídách položek serveru. Knihovna HIERSVR ukázky MFC OLE používá tuto strategii: funkce CServerView::OnDraw
a CServerItem::OnDraw
volání CServerDoc::DrawTree
vykreslující položku.
Zobrazení i položka mají OnDraw
členské funkce, protože se vykreslují za různých podmínek. Zobrazení musí brát v úvahu například faktory, jako je zvětšení, velikost výběru a rozsah, výřez a prvky uživatelského rozhraní, jako jsou posuvníky. Položka serveru na druhé straně vždy nakreslí celý objekt OLE.
Další informace naleznete v tématu CView::OnDraw, COleServerItem, COleServerItem::OnDraw a COleServerDoc::OnGetEmbeddedItem v referenční dokumentaci knihovny tříd.