Sdílet prostřednictvím


Tisk prostřednictvím kódu programu

OLE k dispozici prostředky k jednoznačné identifikaci trvalé dokumenty (GetClassFile) a načíst je do jejich přidružený kód (CoCreateInstance, QueryInterface(IID_IPersistFile), QueryInterface(IID_IPersistStorage), IPersistFile::Load, a IPersistStorage::Load).Dále povolit tisk dokumentů, uzavření aktivního dokumentu (pomocí existující návrh OLE není součástí OLE 2.0 původně) představuje základní standardní tiskové rozhraní, IPrint, všeobecně dostupné přes libovolný objekt, který lze načíst trvalý stav typu dokumentu.Každé zobrazení aktivního dokumentu můžete volitelně podporovat IPrint rozhraní pro tyto funkce poskytují.

IPrint Rozhraní je definován takto:

interface IPrint : IUnknown

{

HRESULT SetInitialPageNum([in] LONG nFirstPage);

HRESULT GetPageInfo(

[out] LONG *pnFirstPage,

[out] LONG *pcPages);

HRESULT Print(

[in] DWORD grfFlags,

[in,out] DVTARGETDEVICE **pptd,

[in,out] PAGESET ** ppPageSet,

[in,out] STGMEDIUM **ppstgmOptions,

[in] IContinueCallback* pCallback,

[in] LONG nFirstPage,

[out] LONG *pcPagesPrinted,

[out] LONG *pnPageLast);

};

Klienti a nádoby jednoduše použít IPrint::Print na pokyn dokumentu a vytiskne sám po načtení dokumentu zadání tisku řídicí příznaky, cílové zařízení, stránky, které chcete vytisknout a další možnosti.Klienta můžete také ovládat pokračování tisk přes rozhraní IContinueCallback (viz níže).

Kromě toho IPrint::SetInitialPageNum podporuje možnost tisknout série dokumentů pomocí číslování stránek bez problémů zjevně výhodu pro aktivní dokument kontejnery jako aplikace Office Binder.IPrint::GetPageInfo umožňuje zobrazení jednoduchého stránkování informace tím, že volající načíst počáteční stránky dříve předané číslo SetInitialPageNum (nebo v dokumentu interní výchozí počáteční číslo stránky) a počet stránek v dokumentu.

Objektů, které podporují IPrint jsou označeny "Printable" klíč uložený v objektu CLSID v registru:

HKEY_CLASSES_ROOT\CLSID\ {...}\Printable

IPrintObvykle je implementována na stejný objekt, který podporuje buď IPersistFile nebo IPersistStorage.Volající Poznámka: trvalý stav některé třídy programově tisknout podíváním se do registru pro klíč "Printable".V současné době "Tištěné" označuje podporu nejméně IPrint; ostatní rozhraní mohou být definovány v budoucnosti která bude k dispozici prostřednictvím QueryInterface li IPrint jednoduše představuje základní úroveň podpory.

Během procesu tisku je vhodné klienta nebo kontejneru, který inicioval tisk určit, zda by měl pokračovat v tisku.Kontejner může například podporovat příkaz "Zastavit tisk", který by měl co nejdříve ukončit tiskové úlohy.Podporovat tuto možnost, může klient tisknutelný objekt implementovat objekt jímky malé oznámení s rozhraním IContinueCallback:

interface IContinueCallback : IUnknown

{

HRESULT FContinue(void);

HRESULT FContinuePrinting(

[in] LONG cPagesPrinted,

[in] LONG nCurrentPage,

[in] LPOLESTR pszPrintStatus);

};

Toto rozhraní je navrženo jako užitečný jako obecný pokračování funkce zpětného volání uskutečněná různých postupů pokračování v rozhraní API systému Win32 (jako například AbortProc pro tisk a EnumMetafileProc pro výčet metafile).Tento návrh rozhraní je tedy užitečné pro širokou škálu časově náročné procesy.

Většina obecných případů IContinueCallback::FContinue funkce je volána pravidelně všechny zdlouhavý proces.Vrátí objekt jímky S_OK budete v operaci pokračovat a S_FALSE co nejdříve zastavit postup.

FContinue, ale není použit v souvislosti s IPrint::Print; místo tisku používá IContinueCallback::FContinuePrint.Měli pravidelně volat libovolný objekt tiskové FContinuePrinting předávání počet stránek, které mají byla tisku, počet tištěnou stránku a další řetězec popisující stav tisku, které klient může zvolit zobrazení uživateli (například "stránka 5 z 19").

Viz také

Koncepty

Kontejnery pro aktivní dokument