Udostępnij za pośrednictwem


Drukowanie programowe

Środki do jednoznacznej identyfikacji dokumentów trwałe pod warunkiem OLE (GetClassFile) i załadować je do ich kod skojarzony (CoCreateInstance, QueryInterface(IID_IPersistFile), QueryInterface(IID_IPersistStorage), IPersistFile::Load, i IPersistStorage::Load).Aby umożliwić dalszy drukowania dokumentów, dotyczących zamknięcia aktywnego dokumentu (przy użyciu istniejący projekt OLE niedostarczane z OLE 2.0 pierwotnie) wprowadza base-standard interfejsu drukowania, IPrint, powszechnie dostępne w ramach dowolnego obiektu, który można załadować trwały stan typ dokumentu.Każdy widok aktywnego dokumentu można opcjonalnie obsługiwać IPrint interfejsu, aby zapewnić te możliwości.

IPrint Interfejsu jest zdefiniowany w następujący sposób:

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

};

Klienci i pojemników po prostu użyć IPrint::Print o powierzeniu dokumentu do druku się po załadowaniu tego dokumentu, określanie drukowania flagi kontrolne, urządzenia docelowego, strony do drukowania oraz dodatkowe opcje.Klient można również sterować kontynuowanie drukowania za pośrednictwem interfejsu IContinueCallback (patrz poniżej).

Dodatkowo IPrint::SetInitialPageNum obsługuje możliwość drukowania serii dokumentów, jak ją za numerację stron bezproblemowo, oczywiście korzyści dla aktywnego dokumentu pojemników, takich jak program Office Binder.IPrint::GetPageInfo numer wcześniej przeszedł do strony powoduje, że wyświetlane informacje podział na strony proste poprzez umożliwienie wywołującego pobrać początkową SetInitialPageNum (lub dokument domyślny wewnętrzny numer strony początkowej) oraz liczbę stron w dokumencie.

Obiekty, które obsługują IPrint są oznaczone w rejestrze klucza "Do druku" przechowywane pod CLSID obiektu:

HKEY_CLASSES_ROOT\CLSID\ {...}\Printable

IPrintZazwyczaj jest zaimplementowana dla tego samego obiektu, który obsługuje albo IPersistFile lub IPersistStorage.Dzwoniący Uwaga przystosowane do drukowania z programowo trwały stan niektóre klasy patrząc w rejestrze dla tego klucza "Do druku".Obecnie "Do druku" oznacza obsługę co najmniej IPrint; inne interfejsy mogą być zdefiniowane w przyszłości, które przestaną być dostępne za pośrednictwem QueryInterface gdzie IPrint po prostu stanowi poziom podstawy obsługi.

Podczas drukowania procedury może być klienta lub kontener, który zainicjował drukowanie do kontrolowania, czy należy kontynuować drukowanie.Na przykład kontener może obsługiwać "Zatrzymaj drukowanie" polecenia, które powinny jak najszybciej zakończyć zadanie drukowania.Aby obsługiwać tę funkcję, klient obiektu do druku można zaimplementować obiekt sink mały zawiadomienie z interfejsem IContinueCallback:

interface IContinueCallback : IUnknown

{

HRESULT FContinue(void);

HRESULT FContinuePrinting(

[in] LONG cPagesPrinted,

[in] LONG nCurrentPage,

[in] LPOLESTR pszPrintStatus);

};

Ten interfejs jest zaprojektowane jako przydatne jako kontynuacja rodzajowy funkcja wywołania zwrotnego, który odbywa się różnych procedur utrzymania w Win32 API (takie jak AbortProc do drukowania i EnumMetafileProc dla wyliczania metafile).Zatem ten projekt interfejsu jest przydatne w wielu różnych procesów czasochłonne.

W przypadkach najbardziej ogólny IContinueCallback::FContinue funkcja jest wywoływana okresowo przez każdy proces długotrwały.Zwraca obiekt sink S_OK aby kontynuować operację, a S_FALSE Aby zatrzymać tę procedurę w możliwie najkrótszym terminie.

FContinue, jednak nie jest używany w kontekście IPrint::Print; Przeciwnie, drukowanie zastosowań IContinueCallback::FContinuePrint.Dowolny obiekt drukowania okresowo powinna wywołać FContinuePrinting marginesie liczbę stron, że drukowanie, numer strony drukowane i dodatkowe ciągu opisujące stan drukowania, który klient może wybrać opcję wyświetlania dla użytkownika (na przykład "strona 5 19").

Zobacz też

Koncepcje

Kontenery dokumentów aktywnych