Sdílet prostřednictvím


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 , CServerItemmá č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

  1. Odvození třídy z COleServerItem.

  2. 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é členskou OnDraw funkci, která slouží k vykreslení položky, když je serverová aplikace aktivní.

  3. 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.

  4. 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.

Viz také

Servery