Sdílet prostřednictvím


Aktivní dokumenty

Aktivní dokumenty rozšířit složeného dokumentu technologie 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 tisku objektů.Tento proces umožňuje zobrazit dokumenty cizích rámců (například aplikaci Microsoft Office Binder nebo v aplikaci Microsoft Internet Explorer) a nativní snímků (například zobrazení portů produktu společnosti).

Tato část popisuje funkční požadavky pro aktivní dokumenty.Aktivní dokument vlastní sadu dat a má přístup ke skladování, kde můžete uložit a načíst data.Můžete vytvořit a spravovat jeden nebo více zobrazení jeho údajů.Vedle podpora vkládání obvyklých a aktivaci na místě rozhraní OLE dokumentů, komunikuje aktivního dokumentu jeho schopnost vytvářet zobrazení prostřednictvím IOleDocument.Prostřednictvím tohoto rozhraní požádat vytvořit (a případně výčet) zobrazení, které lze zobrazit aktivní dokument kontejneru.Prostřednictvím tohoto rozhraní aktivní dokument zadat také různé informace o samotném, například zda podporuje více zobrazení nebo složité obdélníky.

Je IOleDocument rozhraní.Všimněte si, že IEnumOleDocumentViews rozhraní je standardní enumerátor OLE pro 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 s tímto rozhraním zprostředkovatele rámeček zobrazení.Pokud dokument není vložená do kontejneru, samotný server aktivního dokumentu musíte poskytnout rámec zobrazení.Pokud aktivní dokument je vložen v aktivním dokumentu kontejneru, poskytuje kontejneru 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 podobně).Zobrazení fungují jako filtry, jejichž prostřednictvím lze zobrazit data.I v případě, že dokument má pouze jeden typ zobrazení, mohou přesto chcete podporovat více zobrazení jako podpůrné funkce nové okno (například Nové okno na položky okno v aplikacích sady Office v nabídce).

Požadavky pro aktivní dokumenty

Aktivní dokument, zobrazené v aktivním dokumentu kontejneru musí:

  • Složené soubory OLE lze použít jako jeho mechanismus úložiště implementací IPersistStorage.

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

  • Podporovat jedno nebo více zobrazení, které je schopné aktivaci na místě.Zobrazení, musí podporovat rozhraní IOleDocumentView jako rozhraní IOleInPlaceObject a IOleInPlaceActiveObject (pomocí kontejneru IOleInPlaceSite a IOleInPlaceFrame rozhraní).

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

Když znalost a používání rozhraní straně kontejneru je zahrnuto v těchto požadavků.

Požadavky pro objekty zobrazení

Aktivní dokument, můžete vytvořit jedno nebo více zobrazení data.Tato zobrazení jsou funkčně 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í.

Chcete-li zastoupena v rámci kontejnerem aktivního dokumentu musí podporovat zobrazení komponent 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í má přidružené zobrazení webu, které zapouzdřuje rámeček zobrazení a zobrazení port (HWND a obdélníkové oblasti v okně).Web zpřístupňuje tuto funkci však standardní IOleInPlaceSite rozhraní.Poznámka: je možné mít více než jeden port pro zobrazení na jediné HWND.

Každý typ zobrazení obvykle má jiné znázornění tištěné.Tudíž zobrazení a odpovídající zobrazení webů měli implementovat rozhraní tisku Pokud IPrint a IContinueCallback, resp..Rámeček zobrazení musí dohodnout s pomocí zprostředkovatele zobrazení IPrint při tisku začne, tak, aby záhlaví, zápatí, okraje a související prvky jsou vytištěny správně.Upozorňuje zprostředkovatele zobrazení rámečku události týkající se tisku prostřednictvím IContinueCallback.Další informace o použití těchto rozhraní, viz Programové tisk.

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í.Krátké není nezbytné, existovat dvě instance samostatný objekt při je vyžadován pouze jedno zobrazení.

Objekt zobrazení lze také příkaz cíl.Implementací IOleCommandTarget zobrazení mohou přijímat příkazy, které pocházejí z kontejneru uživatelského rozhraní (například Nový, Otevřít, Uložit jako, Tisk na soubor nabídky; and Copy, Paste, Undo on the Edit menu).Další informace naleznete v tématu Zpracování zpráv a cíle příkazu.

Viz také

Koncepty

Uzavření aktivního dokumentu