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.
Az aktív dokumentumtárolók, például a Microsoft Office Binder vagy az Internet Explorer lehetővé teszik, hogy egyetlen kereten belül több különböző alkalmazástípusú dokumentumot használjon (ahelyett, hogy arra kényszeríti, hogy minden dokumentumtípushoz több alkalmazáskeretet hozzon létre és használjon).
Az MFC teljes körű támogatást nyújt az osztály aktív dokumentumtárolóihoz COleDocObjectItem . Az MFC alkalmazásvarázslóval aktív dokumentumtárolót hozhat létre, ha bejelöli az Aktív dokumentumtároló jelölőnégyzetet az MFC alkalmazásvarázsló összetett dokumentumtámogatási lapján. További információ: Aktív dokumentumtároló-alkalmazás létrehozása.
Az aktív dokumentumtárolókkal kapcsolatos további információkért lásd:
Tárolóra vonatkozó követelmények
Az aktív dokumentumok támogatása egy aktív dokumentumtárolóban több, mint csupán interfészek implementálása: ismereteket igényel egy tartalmazott objektum interfészeinek használatáról is. Ugyanez vonatkozik az aktív dokumentumbővítményekre is, ahol a tárolónak azt is tudnia kell, hogyan használhatja ezeket a bővítményillesztőket az aktív dokumentumokon.
Az aktív dokumentumokat integráló aktív dokumentumtárolóknak a következőkkel kell rendelkeznie:
Képesnek kell lennie az objektumtárolás kezelésére az
IPersistStorageinterfészen keresztül, vagyis minden aktív dokumentumhoz meg kell adnia egyIStoragepéldányt.Támogatja az OLE-dokumentumok alapvető beágyazási funkcióit, ami megköveteli a "site" objektumokat (dokumentumonként vagy beágyazásonként egyet), amelyek implementálják
IOleClientSiteésIAdviseSink.Beágyazott objektumok vagy aktív dokumentumok helyben történő aktiválásának támogatása. A tároló helyobjektumainak implementálniuk
IOleInPlaceSitekell, a tároló keretobjektumának pedig meg kell adniaIOleInPlaceFrame.Az aktív dokumentumok kiterjesztéseinek támogatásához implementálja a
IOleDocumentSite-t, hogy biztosítsa a mechanizmust, amely lehetővé teszi a tárolónak a dokumentummal való kommunikációt. A tároló igény szerint implementálhatja az aktív dokumentumfelületeketIOleCommandTarget, ésIContinueCallbackolyan egyszerű parancsokat vehet fel, mint a nyomtatás vagy a mentés.
A keretobjektum, a nézetobjektumok és a tárolóobjektum igény szerint implementálható IOleCommandTarget bizonyos parancsok küldésének támogatásához, ahogyan azt a parancscélok ismertetik. A nézet- és tárolóobjektumok igény szerint implementálhatók IPrint és IContinueCallback– a programozott nyomtatás támogatásához – a programozott nyomtatásban leírtaknak megfelelően.
Az alábbi ábra a tároló és összetevői (bal oldalon) és az aktív dokumentum és nézetei közötti elméleti kapcsolatokat mutatja be (jobb oldalon). Az aktív dokumentum kezeli a tárolást és az adatokat, és a nézet megjeleníti vagy opcionálisan kinyomtatja az adatokat. A félkövér interfészek szükségesek az aktív részvételhez a dokumentumban; a félkövér és dőlt interfészek választhatóak. Minden más interfészre szükség van.
A csak egyetlen nézetet támogató dokumentumok egyetlen konkrét osztályon implementálhatják a nézet- és dokumentumösszetevőket (azaz azok megfelelő felületeit). Emellett egy tárolóhely, amely egyszerre csak egy nézetet támogat, egyetlen konkrét helyosztályba kombinálhatja a dokumentumhelyet és a nézetwebhelyet. A tároló keretobjektumának azonban külön-külön kell maradnia, és a tároló dokumentumösszetevője csak azért van itt, hogy teljes képet adjon az architektúráról; az aktív dokumentum-elszigetelési architektúra nem befolyásolja.
Dokumentumwebhely-objektumok
Az aktív dokumentum-elszigetelési architektúrában a dokumentumwebhelyek megegyeznek az OLE-dokumentumok ügyfélwebhely-objektumával, a IOleDocument felület hozzáadásával:
interface IOleDocumentSite : IUnknown
{
HRESULT ActivateMe(IOleDocumentView *pViewToActivate);
}
A dokumentumwebhely elméletileg egy vagy több "webhely megtekintése" objektum tárolója. Minden nézetwebhely-objektum a dokumentumwebhely által kezelt dokumentum egyes nézetobjektumaival van társítva. Ha a tároló csak egyetlen nézetet támogat dokumentumwebhelyenként, akkor egyetlen konkrét osztálysal implementálhatja a dokumentumwebhelyet és a nézetwebhelyet.
Webhelyobjektumok megtekintése
A tároló nézetwebhely-objektuma kezeli a dokumentum adott nézetének megjelenítési területét. A szabványos IOleInPlaceSite felület támogatása mellett a nézetwebhelyek általában programozott nyomtatásvezérlést is megvalósítanak IContinueCallback . (Vegye figyelembe, hogy a nézetobjektum soha nem kér le IContinueCallback, így ténylegesen implementálható bármilyen objektumon, amelyet a tároló kíván.)
A több nézetet támogató tárolónak képesnek kell lennie több nézetwebhely-objektum létrehozására a dokumentumwebhelyen belül. Ez minden nézethez külön aktiválási és deaktiválási szolgáltatásokat biztosít a megadott módon IOleInPlaceSite.
Keretobjektum
A tároló keretobjektuma többnyire ugyanaz a keret, amelyet az OLE-dokumentumokban a helyszíni aktiváláshoz használnak, vagyis a menü és az eszköztár egyeztetését kezelő keret. Egy nézetobjektum hozzáféréssel rendelkezik ehhez a keretobjektumhoz, IOleInPlaceSite::GetWindowContext amely szintén hozzáférést nyújt a tárolódokumentumot képviselő tárolóobjektumhoz (amely képes kezelni a panelszintű eszköztár-egyeztetést és a tartalmazott objektumok számbavételét).
Egy aktív dokumentumtároló bővítheti a keretet a hozzáadással IOleCommandTarget. Ez lehetővé teszi az aktív dokumentum felhasználói felületéről származó parancsok fogadását ugyanúgy, ahogyan ez a felület lehetővé teszi, hogy a tároló ugyanazokat a parancsokat küldje el (például Fájl új, Megnyitás, Mentés másként, Nyomtatás; Másolás, beillesztés, visszavonás és egyéb műveletek szerkesztése aktív dokumentumba. További információért lásd: Parancscélok.