Servery: Položky serveru

Poznámka:

Knihovna MFC (Microsoft Foundation Classes) se nadále podporuje. Už ale nepřidáme funkce ani aktualizujeme dokumentaci.

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 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, vše, co musíte udělat pro zahrnutí položek 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:

Implementovat položku serveru

  1. Odvození třídy z COleServerItem.

  2. V odvozené třídě přepište členskou OnDraw funkci.

    Rámec volá OnDraw a vykreslí položku 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 serverových dokumentů a v MFC OLE příkladu HIERSVR.

  4. Implementujte funkci člena třídy server-item OnGetExtent. Rámec volá tuto funkci pro získání velikosti položky. Výchozí implementace nic nedělá.

Tip pro architekturu Server-Item

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 serveru OnDraw vykreslí tuto 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. Ukázka MFC OLE HIERSVR používá tuto strategii: funkce CServerView::OnDraw a CServerItem::OnDraw oba volají CServerDoc::DrawTree pro vykreslení položky.

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 naopak vždy vykreslí celý objekt OLE.

Další informace naleznete v tématu CView::OnDraw, COleServerItem, COleServerItem::OnDraw a COleServerDoc::OnGetEmbeddedItem v Referenční příručce knihovny tříd.

Viz také

Servery