Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Knihovna MFC (Microsoft Foundation Classes) se nadále podporuje. Už ale nepřidáme funkce ani aktualizujeme dokumentaci.
TECHNOLOGIE OLE poskytla prostředky k jednoznačné identifikaci trvalých dokumentů (GetClassFile) a jejich načtení do jejich přidruženého kódu (CoCreateInstance, QueryInterface(IID_IPersistFile), QueryInterface(IID_IPersistStorage), IPersistFile::Loada IPersistStorage::Load). Chcete-li dále povolit tisk dokumentů, aktivní uzavření dokumentu (pomocí existujícího návrhu OLE, který není původně dodáván s OLE 2.0) zavádí základní standardní tiskové rozhraní , IPrintobecně dostupné prostřednictvím libovolného objektu, který může načíst trvalý stav typu dokumentu. Každé zobrazení aktivního dokumentu může volitelně podporovat IPrint rozhraní, aby bylo možné tyto možnosti poskytnout.
Rozhraní IPrint je definováno 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 kontejnery jednoduše používají IPrint::Print pokyn, aby se dokument po jeho načtení vytiskl, je třeba zadat příznaky tisku, cílové zařízení, stránky k tisku a další možnosti. Klient může také řídit pokračování tisku prostřednictvím rozhraní IContinueCallback (viz níže).
Kromě toho IPrint::SetInitialPageNum podporuje možnost tisknout řadu dokumentů jako jednu bez problémů číslování stránek, což je samozřejmě výhoda pro aktivní kontejnery dokumentů, jako je Office Binder.
IPrint::GetPageInfo usnadňuje zobrazování informací o stránkování tím, že volajícímu umožníte načíst počáteční číslo stránky, které SetInitialPageNum bylo dříve předáno (nebo interní výchozí počáteční číslo stránky dokumentu) a počet stránek v dokumentu.
Objekty, které podporují IPrint , jsou označené v registru pomocí klíče Printable uloženého pod CLSID objektu:
HKEY_CLASSES_ROOT\CLSID\{...}\Printable
IPrint je obvykle implementován ve stejném objektu, který podporuje buď IPersistFile, nebo IPersistStorage. Volající zaznamenávají schopnost programově tisknout trvalý stav některé třídy hledáním klíče "Print" v registru. V současné době "Tisknutelné" označuje podporu alespoň IPrint. Další rozhraní mohou být definována v budoucnu a budou pak k dispozici prostřednictvím QueryInterface, kde IPrint jednoduše představuje základní úroveň podpory.
Během tiskové procedury můžete chtít, aby klient nebo kontejner, který tisk inicioval, ovládal, zda má tisk pokračovat nebo ne. Kontejner může například podporovat příkaz "Stop Print", který by měl ukončit tiskovou úlohu co nejdříve. Pro podporu této funkce může klient tisknutelného objektu implementovat malý notifikační objekt 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á obecná funkce zpětného volání, která nahrazuje různé procedury pokračování v rozhraní Win32 API (například AbortProc pro tisk a EnumMetafileProc pro enumeraci metafile). Proto je tento návrh rozhraní užitečný v široké škále časově náročných procesů.
Ve většině obecných případů je funkce IContinueCallback::FContinue pravidelně volaná zdlouhavými procesy. Objekt příjmu vrací S_OK, aby pokračoval v operaci, nebo S_FALSE, aby postup zastavil co nejdříve.
FContinuevšak není používán v kontextu IPrint::Print; spíše tisk používá IContinueCallback::FContinuePrint. Každý tiskový objekt by měl pravidelně volat FContinuePrinting, předávat počet stran, které jsou právě tisknuty, číslo právě tisknuté stránky a další řetězec popisující stav tisku, který se klient může rozhodnout zobrazit uživateli (například "Strana 5 z 19").