Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
Származtasson egy osztályt a
COleServerItem-ből.A származtatott osztályában bírálja felül a
OnDrawtagfü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 rendelkezikOnDraw, amely a kiszolgálóalkalmazás aktív állapotában jeleníti meg az elemet.Valósítsa meg a
OnGetEmbeddedItemfelü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.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.