Aracılığıyla paylaş


Program kullanarak yazdırma

ole sağlanan kalıcı belgeler benzersiz olarak tanımlamak demektir (GetClassFile) ve bunların ilişkili koda yüklendikleri (CoCreateInstance, QueryInterface(IID_IPersistFile), QueryInterface(IID_IPersistStorage), IPersistFile::Load, ve IPersistStorage::Load).Yazdırma belgeleri daha etkinleştirmek için etkin belgenin içerik (ole 2.0 ile başlangıçta gönderilmeyen varolan bir ole tasarımı kullanarak) Bankası standart yazdırma arabirimi tanıtır IPrint, belge türü sürekli durumu yükleyen herhangi bir nesne ile doldurmuştur.İsteğe bağlı olarak her bir etkin belge görünümünü destekler IPrint bu yetenekleri sağlamak için arabirim.

IPrint Arabirimi aşağıdaki gibi tanımlanır:

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);

};

İstemciler ve kapsayıcılar basitçe kullanmak IPrint::Print belirten yazdırma denetimi bayrakları, hedef aygıt, sayfaları yazdırmak için bu belge yüklendikten sonra kendisini yazdırmak için belge bildirin ve ek seçenekler.İstemci yazdırma arabiriminden devamı kontrol edebilirsiniz IContinueCallback (aşağıya bakın).

Buna ek olarak, IPrint::SetInitialPageNum belgeleri bir dizi gibi bir numaralandırma sorunsuz, kuşkusuz yararı için etkin belgeyi kapsayıcıları gibi Office Ciltçi Sayfa yazdırma yeteneğini destekler.IPrint::GetPageInfo bilgiler sayfalandırmayı basit başlangıç almak arayan vererek görüntüleme yaptığı sayfa numarasını daha önce geçirilen SetInitialPageNum (veya belgenin iç varsayılan başlangıç sayfa numarası) ve belgedeki sayfa sayısı.

Nesneleri destekleyen IPrint kayıt defterinde nesnesinin CLSID altında saklanan "Printable" anahtar ile işaretlenir:

HKEY_CLASSES_ROOT\CLSID\ {...}\Printable

IPrintgenellikle destekler ya da nesneye uygulanan IPersistFile veya IPersistStorage.Arayanların programlı "Printable" anahtar kayıt defterinde bakarak bazı sınıf kalıcı durumunu yazdırma yeteneği unutmayın.Şu anda, "Basılabilir" destek için en az gösterir IPrint; diğer arabirimler ileride, daha sonra üzerinden kullanılabilir olacaktır tanımlanabilir QueryInterface burada IPrint sadece destek taban düzeyi temsil eder.

Yazdırma işlemi sırasında istemci veya yazdırma, yazdırma devam denetlemek için başlatılan kapsayıcı isteyebilirsiniz.Örneğin, kapsayıcı yazdırma işini mümkün olan en kısa sürede sonlanmalıdır "yazdırma Dur" komutu desteklemiyor olabilir.Bu özelliği desteklemek için yazdırılabilir bir nesnenin istemci arabirimi ile küçük Bildirim havuzu nesnesi uygulayabilirsiniz IContinueCallback:

interface IContinueCallback : IUnknown

{

HRESULT FContinue(void);

HRESULT FContinuePrinting(

[in] LONG cPagesPrinted,

[in] LONG nCurrentPage,

[in] LPOLESTR pszPrintStatus);

};

Bu arabirim, Win32 API çeşitli devamı yordamların yer aldığı genel devamı geri çağrı işlevi olarak yararlı olması için tasarlanmıştır (gibi kaydettiği AbortProc baskıya ve EnumMetafileProc meta numaralandırma için).Böylece bu arabirim tasarımı, çeşitli zaman alan işlemleri yararlıdır.

En genel durumda IContinueCallback::FContinue işlevi çağrılırsa düzenli uzun süren bir işlem.Havuzu nesnesi döndüren S_OK , işleme devam etmek ve s_false sürede yordamı durdurmak için.

FContinue, ancak kapsamında kullanılmayan IPrint::Print; Bunun yerine kullandığı yazdırma IContinueCallback::FContinuePrint.Yazdırma herhangi bir nesnenin belirli aralıklarla çağırmalıdır FContinuePrinting sayfa sayısı geçirmeden olan yazdırma, yazdırılan sayfa ve istemci kullanıcı (örneğin, "sayfa 5 / 19") görüntülemek için seçebilirsiniz yazdırma durumu açıklayan ek bir dize sayısı.

Ayrıca bkz.

Kavramlar

Etkin belgeyi kapsayıcılar