페이지 설정 대화 상자
사용자가 인쇄된 페이지의 다음 특성을 설정할 수 있는 모달 대화 상자를 표시합니다.
- 용지 종류(봉투, 법률, 문자 등)
- 용지 원본(수동 피드, 트랙터 피드, 시트 피더 등)
- 페이지 방향(세로 또는 가로)
- 페이지 여백의 너비
PAGESETUPDLG 구조를 초기화하고 구조를 PageSetupDlg 함수에 전달하여 페이지 설정 대화 상자를 만들고 표시합니다. 그러나 대화 상자에 표시되는 특성은 프린터의 기능에 따라 달라집니다. 다음 그림에서는 일반적인 페이지 설정 대화 상자를 보여 줍니다.
사용자가 확인 단추를 클릭하면 PAGESETUPDLG 구조에서 다양한 멤버를 설정하여 사용자의 선택을 지정한 후 PageSetupDlg가 TRUE를 반환합니다. ptPaperSize 및 rtMargin 멤버에는 사용자가 지정한 값이 포함됩니다. hDevMode 및 hDevNames 멤버는 DEVMODE 및 DEVNAMES 구조체에 대한 전역 메모리 핸들을 포함합니다. 이러한 구조체에는 추가 페이지 정보와 프린터에 대한 정보가 포함됩니다. 이 정보를 사용하여 선택한 프린터로 보낼 출력을 준비할 수 있습니다.
사용자가 페이지 설정 대화 상자를 취소하거나 오류가 발생하면 PageSetupDlg 에서 FALSE를 반환합니다. 오류의 원인을 확인하려면 CommDlgExtendedError 함수를 호출하여 확장된 오류 값을 검색합니다.
이 섹션에서는 다음 항목을 설명합니다.
페이지 설정 대화 상자 초기화
기본적으로 페이지 설정 대화 상자에는 현재 기본 프린터에 대한 정보가 표시됩니다. 대화 상자에서 특정 프린터에 대한 정보를 표시하도록 지시하려면 DEVMODE 또는 DEVNAMES 구조체의 멤버를 설정하고 이러한 구조체의 전역 메모리 핸들을 PAGESETUPDLG의 해당 멤버에 할당합니다. 현재 설치되지 않은 프린터의 이름을 지정하면 대화 상자에 오류 메시지가 표시됩니다. 대화 상자에 오류 메시지가 표시되지 않도록 하려면 PSD_NOWARNING 값을 사용합니다. 페이지 설정 대화 상자를 표시하지 않고 기본 프린터에 대한 정보를 검색하려면 PSD_RETURNDEFAULT 값을 사용합니다.
기본 측정 시스템이 인치인 경우 대화 상자는 기본 측정 단위로 천 분의 1 인치를 사용합니다. 기본 측정 시스템이 메트릭인 경우 대화 상자는 기본 측정 단위로 수백 밀리미터를 사용합니다. 기본 측정 단위를 재정의하려면 PAGESETUPDLG 구조체의 Flags 멤버에서 PSD_INHUNDREDTHSOFMILLIMETERS 또는 PSD_INTHOUSANDTHSOFINCHES 플래그를 설정합니다.
여백의 초기 값은 기본적으로 1인치입니다. PSD_MARGINS 플래그를 설정하면 rtMargin 멤버에 지정된 초기 여백 값이 대화 상자에 표시됩니다. 사용자가 여백에 대해 지정할 수 있는 기본 최소값은 프린터에서 허용하는 최소 여백입니다. PSD_MINMARGINS 플래그를 설정하면 대화 상자에서 rtMinMargin 멤버에 지정된 최소 여백을 적용합니다.
사용자가 특정 옵션을 선택하지 못하도록 하려면 다음 플래그의 조합을 설정하여 해당 컨트롤을 사용하지 않도록 설정합니다.
플래그 | 의미 |
---|---|
PSD_DISABLEMARGINS | 사용자가 여백 설정을 입력하는 편집 컨트롤을 사용하지 않도록 설정합니다. |
PSD_DISABLEORIENTATION | 세로 및 가로 라디오 단추를 사용하지 않도록 설정합니다. |
PSD_DISABLEPAPER | 용지 크기와 용지 원본을 선택하기 위한 컨트롤을 사용하지 않도록 설정합니다. |
PSD_DISABLEPRINTER | 프린터 단추를 사용하지 않도록 설정합니다. |
페이지 설정 대화 상자 사용자 지정
예를 들어 애플리케이션에 고유한 추가 컨트롤을 포함하려는 경우 페이지 설정 대화 상자에 대한 사용자 지정 템플릿을 제공할 수 있습니다. PageSetupDlg 함수는 기본 템플릿 대신 사용자 지정 템플릿을 사용합니다.
페이지 설정 대화 상자에 대한 사용자 지정 템플릿을 제공하려면
- Prnsetup.dlg 파일에 지정된 기본 템플릿을 수정하여 사용자 지정 템플릿을 만듭니다. 기본 페이지 설정 대화 상자 템플릿에 사용되는 컨트롤 식별자는 Dlgs.h 파일에 정의되어 있습니다.
-
PAGESETUPDLG 구조를 사용하여 다음과 같이 템플릿을 사용하도록 설정합니다.
-
사용자 지정 템플릿이 애플리케이션 또는 동적 링크 라이브러리의 리소스인 경우 Flags 멤버에서 PSD_ENABLEPAGESETUPTEMPLATE 플래그를 설정합니다. 구조체의 hInstance 및 lpPageSetupTemplateName 멤버를 사용하여 모듈 및 리소스 이름을 식별합니다.
-또는-
사용자 지정 템플릿이 이미 메모리에 있는 경우 PSD_ENABLEPAGESETUPTEMPLATEHANDLE 플래그를 설정합니다. hPageSetupTemplate 멤버를 사용하여 템플릿이 포함된 메모리 개체를 식별합니다.
-
대화 상자 프로시저로 전송된 메시지를 필터링하려면 PageSetupHook 후크 프로시저를 제공할 수 있습니다. 사용자 지정 템플릿을 사용하여 추가 컨트롤을 정의하는 경우 컨트롤에 대한 입력을 처리하는 PageSetupHook 후크 프로시저를 제공해야 합니다. 또한 PagePaintHook 후크 프로시저를 제공하여 페이지 설정 대화 상자에 표시되는 샘플 페이지의 콘텐츠를 사용자 지정할 수 있습니다. PagePaintHook 후크 프로시저에 대한 자세한 내용은 샘플 페이지 사용자 지정을 참조하세요.
PageSetupHook 후크 프로시저를 사용하도록 설정하려면
- PAGESETUPDLG 구조체의 Flags 멤버에서 PSD_ENABLEPAGESETUPHOOK 플래그를 설정합니다.
- lpfnPageSetupHook 멤버에서 후크 프로시저의 주소를 지정합니다.
WM_INITDIALOG 메시지를 처리한 후 대화 상자 프로시저는 pageSetupHook 후크 프로시저에 WM_INITDIALOG 메시지를 보냅니다. 이 메시지의 lParam 매개 변수는 대화 상자를 초기화하는 데 사용되는 PAGESETUPDLG 구조체에 대한 포인터입니다.
샘플 페이지 사용자 지정
페이지 설정 대화 상자에는 사용자의 선택 항목이 인쇄된 출력의 모양에 미치는 영향을 보여 주는 샘플 페이지의 이미지가 포함되어 있습니다. 이미지는 선택한 용지 또는 봉투 유형을 나타내는 사각형으로 구성되며, 현재 여백을 나타내는 점선 사각형과 인쇄된 페이지에서 텍스트가 표시되는 방식을 보여 주는 부분(그리스어 텍스트) 문자로 구성됩니다.
PageSetupDlg 함수를 호출할 때 PagePaintHook 후크 프로시저를 제공하여 샘플 페이지의 모양을 사용자 지정할 수 있습니다.
PagePaintHook 후크 프로시저를 사용하도록 설정하려면
- PAGESETUPDLG 구조체의 Flags 멤버에서 PSD_ENABLEPAGEPAINTHOOK 플래그를 설정합니다.
- lpfnPagePaintHook 멤버에서 후크 프로시저의 주소를 지정합니다.
대화 상자가 샘플 페이지의 내용을 그리려고 할 때마다 후크 프로시저는 나열된 순서대로 다음 메시지를 받습니다.
메시지 | 의미 |
---|---|
WM_PSD_PAGESETUPDLG | 대화 상자가 샘플 페이지를 그리려고 합니다. 후크 프로시저는 이 메시지를 사용하여 샘플 페이지의 내용을 그릴 준비를 할 수 있습니다. |
WM_PSD_FULLPAGERECT | 대화 상자가 샘플 페이지를 그리려고 합니다. 이 메시지는 샘플 페이지의 경계 사각형을 지정합니다. |
WM_PSD_MINMARGINRECT | 대화 상자가 샘플 페이지를 그리려고 합니다. 이 메시지는 여백 사각형을 지정합니다. |
WM_PSD_MARGINRECT | 대화 상자가 여백 사각형을 그리려고 합니다. |
WM_PSD_GREEKTEXTRECT | 대화 상자가 여백 사각형 안에 그리스어 텍스트를 그리려고 합니다. |
WM_PSD_ENVSTAMPRECT | 대화 상자가 봉투 샘플 페이지의 봉투 스탬프 사각형에 그리려고 합니다. 이 메시지는 봉투에 대해서만 전송됩니다. |
WM_PSD_YAFULLPAGERECT | 대화 상자가 봉투 샘플 페이지의 반환 주소 부분을 그리려고 합니다. 이 메시지는 봉투 및 기타 용지 크기로 전송됩니다. |
그리기 시퀀스(WM_PSD_PAGESETUPDLG,WM_PSD_FULLPAGERECT 또는 WM_PSD_MINMARGINRECT)의 처음 세 메시지 중에서 후크 프로시저가 TRUE를 반환하는 경우 대화 상자는 더 이상 메시지를 보내지 않으며 다음 번에 시스템이 샘플 페이지를 다시 그려야 할 때까지 샘플 페이지에 그리지 않습니다. 후크 프로시저가 세 메시지 모두에 대해 FALSE 를 반환하는 경우 대화 상자는 그리기 시퀀스의 나머지 메시지를 보냅니다.
후크 프로시저가 그리기 시퀀스의 나머지 메시지에 대해 TRUE 를 반환하는 경우 대화 상자는 샘플 페이지의 해당 부분을 그리지 않습니다. 후크 프로시저가 이러한 메시지에 대해 FALSE 를 반환하는 경우 대화 상자는 샘플 페이지의 해당 부분을 그립니다.
대화 상자가 샘플 페이지의 내용을 그리는 것을 방지하려면 PSD_DISABLEPAGEPAINTING 플래그를 설정할 수 있습니다. 이 플래그는 여전히 모든 WM_PSD_* 메시지를 수신하고 샘플 페이지 콘텐츠를 그릴 수 있는 PagePaintHook 후크 프로시저에 영향을 주지 않습니다.