Megosztás a következőn keresztül:


Kiszolgálók: Kiszolgálóelemek

Megjegyzés:

A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

Amikor egy tároló elindít egy kiszolgálót, hogy a felhasználók szerkeszthessenek egy beágyazott vagy csatolt OLE-elemet, a kiszolgálóalkalmazás létrehoz egy "kiszolgálóelemet". A kiszolgálóelem, amely egy származtatott osztály COleServerItemobjektuma, interfészt biztosít a kiszolgálódokumentum és a tárolóalkalmazás között.

Az COleServerItem osztály több felülírható tagfüggvényt határoz meg, amelyeket az OLE hív meg, általában a tárolótól érkező kérésekre válaszolva. A kiszolgálóelemek a kiszolgálódokumentum vagy a teljes dokumentum egy részét jelölhetik. Ha egy OLE-elem beágyazva van a tárolódokumentumba, a kiszolgálóelem a teljes kiszolgálódokumentumot jelöli. Az OLE-elem csatolása esetén a kiszolgálóelem a kiszolgálódokumentum vagy a teljes dokumentum egy részét képviselheti attól függően, hogy a hivatkozás egy részre vagy az egészre mutató hivatkozás.

A HIERSVR-mintában például a kiszolgáló-elem osztálynak van egy tagja, CServerItemamely az osztály CServerNodeegy objektumára mutató mutató. Az CServerNode objektum egy csomópont a HIERSVR-alkalmazás dokumentumában, amely egy fa. Ha az CServerNode objektum a gyökércsomópont, az CServerItem objektum a teljes dokumentumot jelöli. Ha az CServerNode objektum egy gyermekcsomópont, az CServerItem objektum a dokumentum egy részét jelöli. Erre az interakcióra példaként tekintse meg az MFC OLE minta HIERSVR-et .

Kiszolgálóelemek implementálása

Ha az alkalmazásvarázslóval "starter" kódot hoz létre az alkalmazásához, a kezdőkódba történő kiszolgálóelemek beillesztéséhez mindössze annyit kell tennie, hogy az OLE-beállítások lapon kiválaszt egy kiszolgálói lehetőséget. Ha kiszolgálóelemeket ad hozzá egy meglévő alkalmazáshoz, hajtsa végre a következő lépéseket:

Kiszolgálóelem implementálása

  1. Származtasson egy osztályt a COleServerItem-ből.

  2. A származtatott osztályában bírálja felül a OnDraw tagfüggvényt.

    A keretrendszer meghívja OnDraw , hogy az OLE-elemet metafájlba renderelje. A tárolóalkalmazás ezt a metafájlt használja az elem megjelenítéséhez. Az alkalmazás nézetosztálya egy tagfüggvénnyel is rendelkezik OnDraw , amely a kiszolgálóalkalmazás aktív állapotában jeleníti meg az elemet.

  3. Valósítsa meg a OnGetEmbeddedItem felülbírálását a kiszolgáló-dokumentum osztályhoz. További információ: Kiszolgálók: Kiszolgálódokumentumok implementálása és az MFC OLE-minta HIERSVR.

  4. Implementálja a kiszolgálóelem-osztály tagfüggvényét OnGetExtent . A keretrendszer meghívja ezt a függvényt az elem méretének lekéréséhez. Az alapértelmezett implementáció nem végez semmit.

Tippek Server-Item architektúrához

A kiszolgálóelemek implementálásában leírtak szerint a kiszolgálói alkalmazásoknak képesnek kell lenniük az elemek renderelésére mind a kiszolgáló nézetben, mind a tárolóalkalmazás által használt metafájlban. A Microsoft Foundation osztálytár alkalmazásarchitektúrájában a nézetosztály tagfüggvénye OnDraw megjeleníti az elemet szerkesztéskor (lásd : CView::OnDraw az osztálytár-referenciaban). A kiszolgálóelem OnDraw minden más esetben metafájllá alakítja az elemet (lásd : COleServerItem::OnDraw).

Elkerülheti a kód duplikálását, ha segédfüggvényeket ír a kiszolgáló-dokumentum osztályba, és meghívja őket a nézet és a OnDraw kiszolgálóelem-osztályok függvényeiből. Az MFC OLE minta HIERSVR ezt a stratégiát használja: a CServerView::OnDraw és CServerItem::OnDraw függvények mindkettő a CServerDoc::DrawTree hívásával végzik el az elem renderelését.

A nézet és az elem egyaránt rendelkezik tagfüggvényekkel, mert különböző feltételek mellett rajzolnak OnDraw . A nézetnek figyelembe kell vennie az olyan tényezőket, mint a nagyítás, a kijelölés mérete és mértéke, a kivágás és a felhasználói felület elemei, például a görgetősávok. A kiszolgálóelem viszont mindig a teljes OLE objektumot rajzolja meg.

További információkért lásd: CView::OnDraw, COleServerItem, COleServerItem::OnDraw és COleServerDoc::OnGetEmbeddedItem az Osztálykönyvtár referenciában.

Lásd még

Kiszolgálók