프로그래밍 방식으로 인쇄
OLE 영구 문서를 고유 하 게 식별 하는 수단을 제공 합니다 (GetClassFile)와 그에 관련 된 코드 로드 (CoCreateInstance, QueryInterface(IID_IPersistFile), QueryInterface(IID_IPersistStorage), IPersistFile::Load, 및 IPersistStorage::Load).추가로 인쇄 문서를 사용 하려면 인쇄 자료 표준 인터페이스를 액티브 문서 포함 (OLE 2.0를 원래 제공 된 OLE 기존 디자인을 사용 하 여)을 소개 합니다. IPrint, 문서 형식의 영구 상태를 로드할 수 있는 개체를 통해 일반적으로 사용할 수 있습니다.각 보기는 현재 문서를 선택적으로 지원할 수 있는 IPrint 인터페이스에서 이러한 기능을 제공 합니다.
IPrint 인터페이스는 다음과 같이 정의 됩니다:
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);
};
클라이언트 및 컨테이너를 단순히 사용 IPrint::Print 인쇄 제어 플래그, 대상 장치, 인쇄할 페이지를 지정 하는 문서가 로드 된 후 자체를 인쇄할 문서를 지시 하 고 추가 옵션.클라이언트는 또한 연속 인쇄 인터페이스를 통해 제어할 수 있습니다 IContinueCallback (아래 참조).
또한, IPrint::SetInitialPageNum 번호 하나로 완벽 하 게, 분명히 장점이 Office 바인더 마찬가지로 액티브 문서 컨테이너에 대 한 페이지를 일련의 문서를 인쇄 하는 기능을 지원 합니다.IPrint::GetPageInfo 검색 시작 하려면 호출자를 허용 하 여 간단한 페이지 매김 정보를 표시 하면 페이지 번호 이전에 전달 SetInitialPageNum 시작 페이지 번호는 문서 내부 기본 및 문서의 페이지 수가 있습니다.
개체가 지 원하는 IPrint 레지스트리에서 "Printable" 키 저장 개체의 CLSID 아래에 표시 됩니다.
찾아 {...}\Printable
IPrint하나를 지 원하는 동일한 개체에서 구현 되는 일반적으로 IPersistFile 또는 IPersistStorage.호출자는 레지스트리에서 "Printable" 키를 찾아 일부 클래스의 영구 상태를 프로그래밍 방식으로 인쇄할 수가 있습니다.현재, "인쇄 가능한"에 대 한 지원은 적어도 나타냅니다 IPrint. 다른 인터페이스는 다음을 통해 사용할 수 있습니다 나중에 정의할 수 있습니다 QueryInterface 위치 IPrint 은 단순히 자료 지원 수준을 나타냅니다.
인쇄 프로시저 도중 클라이언트 또는 컨테이너에 인쇄를 계속할 것인지 여부를 제어 하 여 인쇄를 시작 할 수 있습니다.예를 들어, 컨테이너는 인쇄 작업을 최대한 빨리 종료 해야 "인쇄 중지" 명령을 지원할 수 있습니다.이 기능을 지원 하려면 클라이언트 인쇄 가능한 개체의 작은 알림 싱크 개체 인터페이스를 구현할 수 있습니다 IContinueCallback:
interface IContinueCallback : IUnknown
{
HRESULT FContinue(void);
HRESULT FContinuePrinting(
[in] LONG cPagesPrinted,
[in] LONG nCurrentPage,
[in] LPOLESTR pszPrintStatus);
};
이 인터페이스는 Win32 API의 다양 한 연속 절차 대신 일반 연속 콜백 함수로 서 유용 하 게 설계 되었습니다 (등의 AbortProc 인쇄 및 EnumMetafileProc 메타 파일 열거에 대 한).따라서이 인터페이스 디자인 다양 한 시간이 많이 걸리는 프로세스에 유용합니다.
가장 일반적인 경우에 IContinueCallback::FContinue 함수는 긴 프로세스에 의해 정기적으로 호출 합니다.싱크 개체를 반환 합니다. S_OK 작업을 계속 하려면 및 S_FALSE 최대한 빨리 절차를 중지 합니다.
그러나 FContinue,에서 사용 되지 않습니다 IPrint::Print. 대신 사용 하 여 인쇄 IContinueCallback::FContinuePrint.인쇄 된 개체를 정기적으로 호출 해야 FContinuePrinting 페이지 수가 전달 된 되었습니다 인쇄 인쇄 되는 페이지 및 클라이언트가 사용자 (예: "페이지 5 19의")를 표시 하도록 선택할 수 있습니다 인쇄 상태를 설명 하는 추가 문자열입니다.