Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
OLE, kalıcı belgeleri (GetClassFile) benzersiz olarak tanımlamak ve bunları ilişkili kodlarına (CoCreateInstance, QueryInterface(IID_IPersistFile), QueryInterface(IID_IPersistStorage), IPersistFile::Loadve IPersistStorage::Load) yüklemek için araçlar sağladı. Belgeleri yazdırmayı daha fazla etkinleştirmek için, aktif belge içerme (OLE 2.0 ile başlangıçta gönderilmeyen mevcut bir OLE tasarımı kullanılarak), genellikle belge türünün kalıcı durumunu yükleyebilen herhangi bir nesne aracılığıyla kullanılabilen temel standart bir yazdırma arabirimi IPrint sunar. Etkin bir belgenin her görünümü isteğe bağlı olarak bu özellikleri sağlamak için arabirimi destekleyebilir IPrint .
Arabirim IPrint 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, belge yüklendikten sonra belgenin kendini yazdırmasını sağlamak, yazdırma denetimi bayraklarını, hedef cihazı, yazdırılacak sayfaları ve ek seçenekleri belirterek kullanmak için IPrint::Print kullanır. İstemci, arabirim IContinueCallback aracılığıyla yazdırmanın devamını da denetleyebiliyor (aşağıya bakın).
Ayrıca, IPrint::SetInitialPageNum sayfaları sorunsuz bir şekilde numaralayarak bir dizi belgeyi tek bir belge olarak yazdırma özelliğini destekler. Bu, Office Ciltçisi gibi etkin belge kapsayıcıları için bir avantajdır.
IPrint::GetPageInfo , çağıranın daha önce geçirilen başlangıç sayfa numarasını (veya belgenin iç varsayılan başlangıç sayfası numarasını) ve belgedeki sayfa sayısını almasına SetInitialPageNum izin vererek sayfalandırma bilgilerinin görüntülenmesini basitleştirir.
Destekleyen IPrint nesneler kayıt defterinde nesnenin CLSID'sinde depolanan "Yazdırılabilir" anahtarıyla işaretlenir:
HKEY_CLASSES_ROOT\CLSID\{...}\Printable
IPrint, genellikle ya IPersistFile ya da IPersistStorage destekleyen aynı nesne üzerinde uygulanır. Çağıranlar, kayıt defterinde "Yazdırılabilir" anahtarını arayarak bazı sınıfın kalıcı durumunu program aracılığıyla yazdırma özelliğini not eder. Şu anda "Yazdırılabilir", en azından IPrint desteğini gösterir; QueryInterface temel destek seviyesini temsil ederken, diğer arabirimler gelecekte tanımlanabilir ve daha sonra IPrint aracılığıyla kullanılabilir.
Yazdırma yordamı sırasında, yazdırmayı başlatan istemcinin veya kapsayıcının yazdırmanın devam edip etmeyeceğini denetlemesini isteyebilirsiniz. Örneğin kapsayıcı, yazdırma işini en kısa sürede sonlandırması gereken bir "Yazdırmayı Durdur" komutunu destekleyemeyebilir. Bu özelliği desteklemek için, yazdırılabilir bir nesnenin istemcisi arabirimiyle IContinueCallbackküçük bir bildirim havuzu nesnesi uygulayabilir:
interface IContinueCallback : IUnknown
{
HRESULT FContinue(void);
HRESULT FContinuePrinting(
[in] LONG cPagesPrinted,
[in] LONG nCurrentPage,
[in] LPOLESTR pszPrintStatus);
};
Bu arabirim, Win32 API'sindeki yazdırma için AbortProc ve meta dosya numaralandırması için EnumMetafileProc gibi çeşitli devamlılık yordamlarının yerini alan genel bir devamlılık geri çağırma işlevi olarak faydalı olacak şekilde tasarlanmıştır. Bu nedenle bu arabirim tasarımı, çok çeşitli zaman alan işlemlerde kullanışlıdır.
Çoğu genel durumda, IContinueCallback::FContinue işlev herhangi bir uzun işlem tarafından düzenli aralıklarla çağrılır. Havuz nesnesi, işleme devam etmek için S_OK döndürür ve yordamı en kısa sürede durdurmak için S_FALSE.
FContinue, ancak IPrint::Print bağlamında kullanılmaz; bunun yerine IContinueCallback::FContinuePrint yazdırmada kullanılır. Herhangi bir yazdırma nesnesi, yazdırılan sayfa sayısını, yazdırılan sayfa sayısını ve istemcinin kullanıcıya görüntülemeyi seçebileceği yazdırma durumunu açıklayan ek bir dizeyi ("Sayfa 5/ 19" gibi) düzenli aralıklarla çağırmalıdır FContinuePrinting .