Sdílet prostřednictvím


Aktivní dokumenty

Aktivní dokumenty rozšířit složeného dokumentu technologii OLE.Tato rozšíření jsou k dispozici ve formě další rozhraní, které spravují zobrazení tak, aby fungovala v rámci kontejnerů a ještě si zachovat kontrolu nad jejich zobrazení a tiskové funkce objekty.Tento proces umožňuje zobrazení dokumentů v zahraničních snímků (například aplikaci Microsoft Office Binder nebo Microsoft Internet Explorer) a v nativních snímků (například zobrazení produktu vlastní porty).

Tato část popisuje funkce požadavky pro aktivní dokumenty.Aktivní dokument vlastní sadu dat a má přístup do úložiště, kde lze uložit a načíst data.To můžete vytvořit a spravovat jeden nebo více názorů na její data.Kromě podpory obvyklého vložení a aktivaci na místě rozhraní OLE dokumentů, komunikuje aktivního dokumentu jeho schopnost vytvářet zobrazení pomocí IOleDocument.Prostřednictvím tohoto rozhraní můžete požádat kontejneru vytvořit (a případně výčet) zobrazení, která lze zobrazit v aktivním dokumentu.Přes toto rozhraní aktivního dokumentu můžete také zadat různé informace o sobě, například zda podporuje více zobrazení nebo složité obdélníky.

Dále je IOleDocument rozhraní.Všimněte si, že IEnumOleDocumentViews rozhraní je standardní výčet OLE IOleDocumentView * typy.

interface IOleDocument : IUnknown

{

HRESULT CreateView(

[in] IOleInPlaceSite *pIPSite,

[in] IStream *pstm,

[in] DWORD dwReserved,

[out] IOleDocumentView **ppView);

HRESULT GetDocMiscStatus([out] DWORD *pdwStatus);

HRESULT EnumViews(

[out] IEnumOleDocumentViews **ppEnum,

[out] IOleDocumentView **ppView);

}

Každý aktivní dokument musí mít zprostředkovatele zobrazení snímku s tímto rozhraním.Pokud dokument není vložený v rámci kontejneru, samotný server aktivního dokumentu musíte zadat zobrazení snímku.Však pokud aktivní dokument je vložen v kontejneru aktivního dokumentu, poskytuje kontejner zobrazení snímku.

Aktivní dokument, můžete vytvořit jeden nebo více typů zobrazení data (například Normální, osnovy, rozložení stránky a tak dále).Chovat se jako filtry, pomocí kterých lze zobrazit data zobrazení.I v případě, že dokument obsahuje pouze jeden typ zobrazení, je stále vhodné pro podporu více zobrazení jako prostředek pro podporu nových funkcí okna (například Nové okno bod na okna nabídky v aplikacích sady Office).

Požadavky na aktivní dokumenty

Aktivní dokument, který lze zobrazit v kontejneru aktivního dokumentu musí:

  • Použít OLE složené soubory jako jeho mechanismus úložiště pomocí implementace IPersistStorage.

  • Podporuje základní funkce vložení OLE dokumentů, včetně Vytvořit ze souboru.To vyžaduje rozhraní IPersistFile, IOleObject, a IDataObject.

  • Podporovat jeden nebo více zobrazení, z nichž každý je schopen aktivace na místě.To znamená, že zobrazení musí podporovat rozhraní IOleDocumentView a rozhraní IOleInPlaceObject a IOleInPlaceActiveObject (pomocí kontejneru IOleInPlaceSite a IOleInPlaceFrame rozhraní).

  • Podpora aktivního dokumentu standardní rozhraní IOleDocument, IOleCommandTarget, a IPrint.

Znalost, kdy a jak používat rozhraní straně kontejneru je zahrnuta v těchto požadavků.

Požadavky pro objekty zobrazení

Aktivní dokument, můžete vytvořit jedno nebo více zobrazení data.Funkčně tato zobrazení jsou stejné jako porty na určitý způsob zobrazení data.Pokud aktivní dokument podporuje pouze jedno zobrazení, aktivní dokument a jediné zobrazení mohou být implementovány pomocí jediné třídy.IOleDocument::CreateView vrátí stejný objekt, IOleDocumentView ukazatel rozhraní.

Zastoupení v rámci kontejneru aktivního dokumentu, musí podporovat zobrazení komponenty IOleInPlaceObject a IOleInPlaceActiveObject k IOleDocumentView:

interface IOleDocumentView : IUnknown

{

HRESULT SetInPlaceSite([in] IOleInPlaceSite *pIPSite);

HRESULT GetInPlaceSite([out] IOleInPlaceSite **ppIPSite);

HRESULT GetDocument([out] IUnknown **ppunk);

[input_sync] HRESULT SetRect([in] LPRECT prcView);

HRESULT GetRect([in] LPRECT prcView);

[input_sync] HRESULT SetRectComplex(

[in] LPRECT prcView,

[in] LPRECT prcHScroll,

[in] LPRECT prcVScroll,

[in] LPRECT prcSizeBox);

HRESULT Show([in] BOOL fShow);

HRESULT UIActivate([in] BOOL fUIActivate);

HRESULT Open(void);

HRESULT CloseView([in] DWORD dwReserved);

HRESULT SaveViewState([in] IStream *pstm);

HRESULT ApplyViewState([in] IStream *pstm);

HRESULT Clone(

[in] IOleInPlaceSite *pIPSiteNew,

[out] IOleDocumentView **ppViewNew);

}

Každé zobrazení obsahuje přidružené zobrazení webu, která zapouzdřuje rámce zobrazení a zobrazení port (HWND a obdélníkovou oblast v okně).Web poskytuje tuto funkci však standardní IOleInPlaceSite rozhraní.Všimněte si, že je možné mít více než jeden port zobrazení na jediné HWND.

Každý typ zobrazení obvykle má jiné znázornění tištěné.Proto zobrazení a odpovídající zobrazení sítě měli implementovat rozhraní tisku Pokud IPrint a IContinueCallback, respektive.Zobrazení snímku musí dohodnout s poskytovatelem zobrazení pomocí IPrint při tisku začíná, takže záhlaví, zápatí, okraje a související prvky jsou vytištěny správně.Upozorní zprostředkovatele zobrazení rámečku tiskové události prostřednictvím IContinueCallback.Další informace o použití těchto rozhraní, viz Tisk prostřednictvím kódu programu.

Všimněte si, že pokud aktivní dokument podporuje pouze jedno zobrazení, pak aktivní dokument a jediné zobrazení mohou být implementovány pomocí jedné konkrétní třídy.IOleDocument::CreateView jednoduše vrátí stejný objekt, IOleDocumentView ukazatel rozhraní.Stručně řečeno není nutné, existovat dvě instance samostatný objekt je požadováno pouze jedno zobrazení.

Objekt zobrazení může být také cílový příkaz.Implementací IOleCommandTarget zobrazení můžete zobrazit příkazy, které pocházejí z kontejneru uživatelského rozhraní (jako Nový, otevřených, Uložit jako, Tisk na souboru nabídky; and Copy, Paste, Undo on the Edit menu).Další informace naleznete v tématu Zpracování zpráv a cíle příkazů.

Viz také

Koncepty

Práce s kontejnery aktivních dokumentů