Kontejnery pro aktivní dokument
Kontejner pro aktivní dokument, například aplikaci Microsoft Office Binder nebo aplikace Internet Explorer umožňuje pracovat s několika dokumenty aplikace různých typů v rámci jednoho snímku (nikoli vynucení můžete vytvořit a používat více snímků v aplikaci pro každý typ dokumentu).
Knihovna MFC poskytuje plnou podporu pro kontejnery aktivní dokument v COleDocObjectItem třídy.Můžete použít Průvodce aplikace knihovny MFC k vytvoření kontejneru aktivního dokumentu výběrem kontejneru aktivního dokumentu políčko na Podporu složeného dokumentu stránce Průvodce aplikací knihovny MFC.Další informace naleznete v tématu Vytvoření aplikace Active dokument kontejneru.
Další informace o kontejnerech aktivního dokumentu v následujících tématech:
Požadavky na kontejner
Objekty lokalit dokumentu
Zobrazení objektů serveru
Rámec objektu
Požadavky na kontejner
Podpora aktivního dokumentu v kontejneru aktivního dokumentu zahrnuje více než jen implementace rozhraní: nevyžaduje znalost pomocí rozhraní obsažených objektů.Totéž platí pro rozšíření aktivní dokument, kde kontejner musí také vědět, jak používat tyto rozšíření rozhraní na samotné aktivní dokumenty.
Kontejner pro aktivní dokument, který integruje aktivní dokumenty musí:
Být schopen zpracovávat objekt úložiště až IPersistStorage rozhraní, je nutné zadat IStorage instanci každého aktivního dokumentu.
Podporuje základní funkce vložení OLE dokumentů, které objekty "server", (jeden pro každý dokument nebo vložení) které implementují IOleClientSite a IAdviseSink.
Podporuje aktivaci na místě vložené objekty nebo aktivní dokumenty.Objekty kontejneru sítě musí implementovat IOleInPlaceSite a rámeček objektu kontejneru musí poskytnout IOleInPlaceFrame.
Podporovat rozšíření aktivní dokumenty implementací IOleDocumentSite a vytvořit mechanismus k rozhovoru se dokument kontejneru.Volitelně můžete kontejner implementují rozhraní aktivního dokumentu IOleCommandTarget a IContinueCallback k vyzvednutí jednoduchých příkazů, jako je tisk nebo uložení.
Rámeček objektu, zobrazit objekty a objekt kontejneru můžete volitelně implementovat IOleCommandTarget pro podporu odesílání určitých příkazů, jak je popsáno v Cílem příkazu.Zobrazení a kontejner objektů můžete také volitelně implementovat IPrint a IContinueCallback, pro podporu programové tisk, jak je popsáno v Programové tisku.
Následující obrázek ukazuje koncepční vztahy mezi kontejneru a jeho komponenty (vlevo) a aktivního dokumentu a jeho zobrazení (vpravo).Aktivní dokument spravuje úložiště a dat a zobrazení zobrazuje nebo tiskne volitelně data.Rozhraní tučně jsou nezbytné pro účast v aktivním dokumentu; tučné písmo a kurzívu jsou volitelné.Jsou požadovány jinými rozhraními.
Dokument, který podporuje pouze jedno zobrazení můžete implementovat součásti zobrazení i dokumentu (to znamená, že jejich odpovídající rozhraní) na jedné konkrétní třídy.Navíc web kontejner, který podporuje pouze jedno zobrazení najednou a lze kombinovat web dokumenty zobrazit web do třídy jeden konkrétní web.Rámeček objektu kontejneru, však musí zůstat odlišná a součást dokument kontejneru pouze zde zahrnuta poskytnout úplný obraz o architektuře; není ovlivněn architektura uzavření aktivního dokumentu.
Objekty lokalit dokumentu
V architektuře uzavření aktivního dokumentu webu dokumentu je stejný jako objekt klienta serveru OLE dokumentů s přídavkem IOleDocument rozhraní:
interface IOleDocumentSite : IUnknown
{
HRESULT ActivateMe(IOleDocumentView *pViewToActivate);
}
Web dokumenty je koncepčně kontejner pro jeden nebo více objektů "zobrazit web".Každý objekt zobrazení webu souvisí s individuální zobrazení objektů dokumentu spravuje web dokumenty.Pokud kontejner podporuje pouze jedno zobrazení pro celý dokument, pak jej implementovat web dokumentů a zobrazení webu pomocí jedné konkrétní třídy.
Zobrazení objektů serveru
Kontejneru zobrazení webu objekt spravuje prostor pro zobrazení dokumentu zobrazení.Kromě podpory standardu IOleInPlaceSite rozhraní zobrazit web obecně také implementuje IContinueCallback pro programové řízení tisku. (Všimněte si, že objekt zobrazení nikdy dotazy pro IContinueCallback tak, aby mohl být skutečně zaveden na libovolný objekt kontejneru přání.)
Kontejner, který podporuje více zobrazení musí být schopen vytvořit více zobrazení objekty sítí v rámci sítě dokumentu.To poskytuje každé zobrazení samostatné aktivaci a deaktivaci služby jako poskytované prostřednictvím IOleInPlaceSite.
Rámec objektu
Rámeček objektu kontejneru je z velké části stejný rámec, který se používá pro aktivaci na místě v dokumentaci OLE, který je, který zpracovává vyjednávání nabídek a panelů nástrojů.Objekt zobrazení má přístup k tomuto objektu snímku prostřednictvím IOleInPlaceSite::GetWindowContext, která také poskytuje přístup k objektu kontejneru reprezentující dokument kontejneru (což může zpracovávat vyjednávání úrovně podokno nástrojů a výčet obsažený objekt).
Kontejneru aktivního dokumentu můžete rozšířit rámec přidáním IOleCommandTarget.Umožňuje přijímat příkazy, které pocházejí z uživatelského rozhraní aktivní dokument stejným způsobem, že toto rozhraní umožňuje kontejneru odeslat stejné příkazy (například Nový soubor, otevřených, Uložit jako, Tisk; Upravit kopii, Vložit, zpěta další) do aktivního dokumentu.Další informace naleznete v tématu Cílem příkazu.