인쇄 속성 시트
Print 속성 시트는 사용자가 특정 인쇄 작업의 속성을 지정할 수 있는 표준 사용자 인터페이스입니다. 속성 시트는 프린터 또는 응용 프로그램에 따라 달라지는 속성 페이지 집합으로 구성됩니다. 표준 Windows 속성 페이지의 하위 집합에 일부 프린터는 드라이버별 속성 페이지를 추가할 수 있으며 일부 애플리케이션은 애플리케이션별 속성 페이지를 추가할 수 있습니다.
Print 속성 시트를 만들고 표시하려면 PRINTDLGEX 구조를 초기화하고 구조를 PrintDlgEx 함수에 전달합니다.
다음 그림에서는 일반적인 Print 속성 시트를 보여 줍니다.
PRINTDLGEX 구조체의 대부분의 멤버는 PRINTDLG 구조체의 멤버와 동일합니다. 공통 구조체 멤버를 사용하여 대화 상자 컨트롤과 상호 작용하는 방법에 대한 설명은 인쇄 대화 상자를 참조하세요. 이 항목의 나머지 부분에서는 인쇄 대화 상자와 다른 인쇄 속성 시트 기능에 대해 설명합니다.
일반 페이지의 아래쪽 부분에 대한 사용자 지정 대화 상자 템플릿을 지정하고 일반 페이지 다음에 추가 속성 페이지를 지정하여 인쇄 속성 시트를 사용자 지정할 수 있습니다. 자세한 내용은 인쇄 속성 시트 사용자 지정을 참조하세요.
속성 시트가 표시되는 동안 PrintDlgEx 함수에서 알림 및 메시지를 수신하도록 콜백 개체를 구현할 수 있습니다. 사용자 지정 템플릿 또는 추가 페이지를 제공하는 애플리케이션은 콜백 개체를 사용하여 속성 시트와 통신합니다. 자세한 내용은 Print 속성 시트의 콜백 개체를 참조하세요.
Print 속성 시트는 인쇄할 인접하지 않은 여러 페이지 범위를 지정할 수 있도록 지원합니다. PRINTDLGEX 구조체의 lpPageRanges 멤버는 각 구조체가 페이지 범위를 지정하는 PRINTPAGERANGE 구조체의 배열을 지정합니다.
인쇄 속성 시트에는 현재 페이지 라디오 단추가 라디오 단추의 페이지 범위 그룹의 일부로 표시됩니다. 현재 페이지 라디오 단추를 제어하려면 PRINTDLGEX 구조체의 Flags 멤버에서 PD_CURRENTPAGE 및PD_NOCURRENTPAGE플래그를 사용합니다.
이 섹션에서는 다음 항목을 설명합니다.
인쇄 속성 시트 사용자 지정
다음과 같은 방법으로 Print 속성 시트를 사용자 지정할 수 있습니다.
- 일반 페이지의 아래쪽 부분에 대한 사용자 지정 템플릿을 제공합니다. 이렇게 하면 애플리케이션에 고유한 추가 컨트롤을 포함할 수 있습니다. PrintDlgEx 함수는 기본 템플릿 대신 사용자 지정 템플릿을 사용합니다.
- 일반 페이지를 따를 추가 속성 페이지를 제공합니다.
- 콜백 개체를 제공합니다. 자세한 내용은 Print 속성 시트의 콜백 개체를 참조하세요.
일반 페이지의 위쪽 부분은 변경할 수 없습니다. 프린터 드라이버에서 제공하는 속성 페이지는 변경할 수 없습니다.
일반 페이지에 대한 사용자 지정 템플릿을 제공하려면 다음을 수행합니다.
Prnsetup.dlg 파일에 지정된 PRINTDLGEXORD 템플릿을 수정하여 일반 페이지의 아래쪽 부분에 대한 사용자 지정 템플릿을 만듭니다. 일반적으로 사용자 지정 템플릿은 기본 템플릿과 크기가 같아야 합니다. 그러나 PD_USELARGETEMPLATE 플래그를 지정하여 더 큰 일반 페이지를 만드는 경우 사용자 지정 템플릿을 확대할 수 있습니다. 기본 인쇄 대화 상자 템플릿에 사용되는 컨트롤 식별자는 Dlgs.h 파일에 정의되어 있습니다.
다음과 같이 PRINTDLGEX 구조를 사용하여 템플릿을 사용하도록 설정합니다.
사용자 지정 템플릿이 애플리케이션 또는 동적 링크 라이브러리의 리소스인 경우 Flags 멤버에서 PD_ENABLEPRINTTEMPLATE 플래그를 설정합니다. 구조체의 hInstance 및 lpPrintTemplateName 멤버를 사용하여 모듈 및 리소스 이름을 식별합니다.
-또는-
사용자 지정 템플릿이 이미 메모리에 있는 경우 PD_ENABLEPRINTTEMPLATEHANDLE 플래그를 설정합니다. hInstance 멤버를 사용하여 템플릿이 포함된 메모리 개체를 식별합니다.
사용자 지정 템플릿을 사용하여 추가 컨트롤을 정의하는 경우 컨트롤에 대한 입력을 처리하는 콜백 개체를 제공해야 합니다. 콜백 개체는 사용자 지정 대화 상자로 전송된 메시지를 수신하는 IPrintDialogCallback::HandleMessage 메서드를 구현합니다.
추가 속성 페이지를 제공하려면
함수를 사용하여 추가 페이지를 만듭니다.
PRINTDLGEX 구조체의 lphPropertyPages 멤버를 사용하여 추가 페이지에 대한 핸들 배열을 지정합니다.
각 페이지 프로세스 메시지를 만들 때 지정한 대화 상자 프로시저는 페이지로 전송됩니다.
인터페이스를 구현하는 콜백 개체를 제공할 수 있습니다. PrintDlgEx 함수는 이 인터페이스를 사용하여 IPrintDialogServices 인터페이스에 대한 포인터를 애플리케이션에 전달합니다. 추가 속성 페이지에 대한 대화 상자 프로시저는 이 인터페이스를 사용하여 현재 선택한 프린터에 대한 정보를 검색할 수 있습니다.
Print 속성 시트에 대한 콜백 개체
Print 속성 시트를 표시하는 애플리케이션은 속성 시트가 표시되는 동안 PrintDlgEx 함수에서 알림 및 메시지를 수신하는 콜백 개체를 구현할 수 있습니다. 콜백 개체를 제공하려면 PRINTDLGEX 구조체의 lpCallback 멤버에 있는 개체에 대한 포인터를 지정합니다.
콜백 개체는 IPrintDialogCallback 인터페이스를 구현해야 합니다. PrintDlgEx 함수는 다음과 같은 상황에서 IPrintDialogCallback 메서드를 호출합니다.
- 대화 상자가 초기화된 경우
- 사용자가 속성 시트에 표시된 설치된 프린터 목록에서 다른 프린터를 선택하는 경우
- 속성 시트 일반 페이지의 아래쪽 부분에 있는 자식 대화 상자에 대한 메시지를 수신하는 경우
콜백 개체는 IObjectWithSite 인터페이스도 구현해야 합니다. PrintDlgEx 함수는 메서드를 호출하여 IPrintDialogServices 인터페이스에 대한 포인터를 애플리케이션에 전달합니다. IPrintDialogCallback 메서드는 IPrintDialogServices 인터페이스를 사용하여 현재 선택된 프린터에 대한 정보를 검색할 수 있습니다. IPrintDialogServices 인터페이스는 Print 속성 시트의 일반 페이지를 따라 추가 페이지를 만드는 애플리케이션에도 유용합니다. 추가 페이지에 대한 대화 상자 프로시저는 IPrintDialogServices 메서드를 호출할 수 있습니다.