다음을 통해 공유


PRINTDLGEXW 구조체(commdlg.h)

PrintDlgEx 함수가 Print 속성 시트초기화하는 데 사용하는 정보를 포함합니다. 사용자가 속성 시트를 닫은 후 시스템은 이 구조를 사용하여 사용자의 선택 항목에 대한 정보를 반환합니다.

통사론

typedef struct tagPDEXW {
  DWORD            lStructSize;
  HWND             hwndOwner;
  HGLOBAL          hDevMode;
  HGLOBAL          hDevNames;
  HDC              hDC;
  DWORD            Flags;
  DWORD            Flags2;
  DWORD            ExclusionFlags;
  DWORD            nPageRanges;
  DWORD            nMaxPageRanges;
  LPPRINTPAGERANGE lpPageRanges;
  DWORD            nMinPage;
  DWORD            nMaxPage;
  DWORD            nCopies;
  HINSTANCE        hInstance;
  LPCWSTR          lpPrintTemplateName;
  LPUNKNOWN        lpCallback;
  DWORD            nPropertyPages;
  HPROPSHEETPAGE   *lphPropertyPages;
  DWORD            nStartPage;
  DWORD            dwResultAction;
} PRINTDLGEXW, *LPPRINTDLGEXW;

회원

lStructSize

형식: DWORD

구조체 크기(바이트)입니다.

hwndOwner

형식: HWND

속성 시트를 소유하는 창에 대한 핸들입니다. 이 멤버는 유효한 창 핸들이어야 합니다. NULL수 없습니다.

hDevMode

형식: HGLOBAL

DEVMODE 구조체를 포함하는 이동 가능한 전역 메모리 개체에 대한 핸들입니다. hDevMode 입력 시 NULL 않으면 DEVMODE 구조체에 대해 이동 가능한 메모리 블록을 할당하고 해당 멤버를 초기화해야 합니다. PrintDlgEx 함수는 입력 데이터를 사용하여 속성 시트의 컨트롤을 초기화합니다. PrintDlgEx 반환되면 DEVMODE 멤버는 사용자의 입력을 나타냅니다.

hDevMode 입력 시 NULL 경우 PrintDlgEx DEVMODE 구조체에 대한 메모리를 할당하고, 사용자의 입력을 나타내도록 멤버를 초기화하고, 이를 식별하는 핸들을 반환합니다.

hDevModehDevNames 멤버에 대한 자세한 내용은 이 항목의 끝에 있는 설명 섹션을 참조하세요.

hDevNames

형식: HGLOBAL

DEVNAMES 구조체를 포함하는 이동 가능한 전역 메모리 개체에 대한 핸들입니다. hDevNames 입력 시 NULL 않으면 DEVNAMES 구조체에 대해 이동 가능한 메모리 블록을 할당하고 해당 멤버를 초기화해야 합니다. PrintDlgEx 함수는 입력 데이터를 사용하여 속성 시트의 컨트롤을 초기화합니다. PrintDlgEx 반환되면 DEVNAMES 멤버에는 사용자가 선택한 프린터에 대한 정보가 포함됩니다. 이 정보를 사용하여 디바이스 컨텍스트 또는 정보 컨텍스트를 만들 수 있습니다.

hDevNames 멤버는 NULL수 있습니다. 이 경우 PrintDlgEx DEVNAMES 구조에 대한 메모리를 할당하고, 사용자의 입력을 나타내도록 멤버를 초기화하고, 이를 식별하는 핸들을 반환합니다.

hDevModehDevNames 멤버에 대한 자세한 내용은 이 항목의 끝에 있는 설명 섹션을 참조하세요.

hDC

형식: HDC

Flags 멤버가 PD_RETURNDC 또는 PC_RETURNIC 플래그를 지정하는지 여부에 따라 디바이스 컨텍스트 또는 정보 컨텍스트에 대한 핸들입니다. 플래그를 지정하지 않으면 이 멤버의 값이 정의되지 않습니다. 두 플래그를 모두 지정하면 PD_RETURNDC 우선 순위가 지정됩니다.

Flags

형식: DWORD

인쇄 속성 시트를 초기화하는 데 사용할 수 있는 비트 플래그 집합입니다. PrintDlgEx 함수가 반환되면 이러한 플래그를 설정하여 사용자의 입력을 나타냅니다. 이 멤버는 다음 값 중 하나 이상일 수 있습니다.

PrintDlg 또는 PrintDlgEx DEVMODE 구조의 dmCopiesdmCollate 멤버에서 올바른 값을 반환하도록 하려면 PD_RETURNDCTRUE 설정하고 TRUEPD_USEDEVMODECOPIESANDCOLLATE. 이렇게 하면 PRINTDLG 구조의 nCopies 멤버가 항상 1이고 PD_COLLATE 항상 FALSE.

PrintDlg 또는 PrintDlgEx nCopiesPD_COLLATE올바른 값을 반환하도록 하려면 PD_RETURNDCTRUE 설정하고 FALSEPD_USEDEVMODECOPIESANDCOLLATE. 이렇게 하면 dmCopies 항상 1이고 dmCollate 항상 FALSE.

Windows Vista부터 PrintDlg 호출하거나 PD_RETURNDC TRUE 설정된 PrintDlgEx false설정하면 PD_USEDEVMODECOPIESANDCOLLATE PrintDlg 또는 PrintDlgEx 함수는 PRINTDLG 구조체의 nCopies 멤버의 복사본 수를 설정합니다. 그리고 PRINTDLG 구조체의 hDC 멤버가 나타내는 구조의 복사본 수를 설정합니다.

GDI를 호출할 때는 nCopies값을 무시하고 값을 1로 간주하고 반환된 hDC 사용하여 중복 복사본을 인쇄하지 않도록 해야 합니다.

의미
PD_ALLPAGES
0x00000000
모든 라디오 단추가 처음에 선택되었음을 나타내는 기본 플래그입니다. 이 플래그는 PD_PAGENUMS, PD_SELECTIONPD_CURRENTPAGE 플래그가 지정되지 않았음을 나타내는 자리 표시자로 사용됩니다.
PD_COLLATE
0x00000010
이 플래그를 설정하면 데이터 정렬 확인란이 선택됩니다.

PrintDlgEx 함수가 반환될 때 이 플래그가 설정되면 애플리케이션은 여러 복사본의 데이터 정렬을 시뮬레이션해야 합니다. 자세한 내용은 PD_USEDEVMODECOPIESANDCOLLATE 플래그에 대한 설명을 참조하세요.

PD_NOPAGENUMS참조하세요.

PD_CURRENTPAGE
0x00400000
이 플래그를 설정하면 현재 페이지 라디오 단추가 선택됩니다. PD_PAGENUMS, PD_SELECTION또는 PD_CURRENTPAGE 플래그가 설정되지 않은 경우 모든 라디오 단추가 선택됩니다.
PD_DISABLEPRINTTOFILE
0x00080000
파일 인쇄 확인란을 사용하지 않도록 설정합니다.
PD_ENABLEPRINTTEMPLATE
0x00004000
hInstancelpPrintTemplateName 멤버가 일반 페이지의 아래쪽에 있는 기본 대화 상자 서식 파일의 대체를 지정함을 나타냅니다. 기본 템플릿에는 인쇄 대화 상자와 유사한 컨트롤이 포함되어 있습니다. 시스템은 지정된 템플릿을 사용하여 일반 페이지의 자식인 창을 만듭니다.
PD_ENABLEPRINTTEMPLATEHANDLE
0x00010000
hInstance 멤버가 미리 로드된 대화 상자 템플릿을 포함하는 데이터 블록을 식별함을 나타냅니다. 이 템플릿은 일반 페이지의 아래쪽에 있는 기본 대화 상자 템플릿을 대체합니다. 시스템은 지정된 템플릿을 사용하여 일반 페이지의 자식인 창을 만듭니다. 이 플래그가 지정된 경우 시스템에서 lpPrintTemplateName 멤버를 무시합니다.
PD_EXCLUSIONFLAGS
0x01000000
ExclusionFlags 멤버가 프린터 드라이버 속성 페이지에서 제외할 항목을 식별한다는 것을 나타냅니다. 이 플래그를 설정하지 않으면 기본적으로 프린터 드라이버 속성 페이지에서 항목이 제외됩니다. 제외는 일반 페이지, 애플리케이션에서 지정한 페이지 및 프린터 드라이버 페이지 간에 항목의 중복을 방지합니다.
PD_HIDEPRINTTOFILE
0x00100000
파일 인쇄 확인란을 숨깁니다.
PD_NOCURRENTPAGE
0x00800000
현재 페이지 라디오 단추를 사용하지 않도록 설정합니다.
PD_NOPAGENUMS
0x00000008
Pages 라디오 단추 및 연결된 편집 컨트롤을 사용하지 않도록 설정합니다. 또한 데이터 정렬 확인란이 대화 상자에 나타납니다.
PD_NOSELECTION
0x00000004
선택 라디오 단추를 사용하지 않도록 설정합니다.
PD_NOWARNING
0x00000080
오류가 발생할 때 경고 메시지가 표시되지 않도록 합니다.
PD_PAGENUMS
0x00000002
이 플래그를 설정하면 페이지 라디오 단추가 선택됩니다. PD_PAGENUMS, PD_SELECTION또는 PD_CURRENTPAGE 플래그가 설정되지 않은 경우 모든 라디오 단추가 선택됩니다. PrintDlgEx 함수가 반환될 때 이 플래그가 설정되면 lpPageRanges 멤버는 사용자가 지정한 페이지 범위를 나타냅니다.
PD_PRINTTOFILE
0x00000020
이 플래그가 설정되면 파일 인쇄 확인란이 선택됩니다. PrintDlgEx 반환될 때 이 플래그가 설정되면 DEVNAMES 구조체의 wOutputOffset 멤버가 나타내는 오프셋에 "FILE:" 문자열이 포함됩니다. StartDoc 함수를 호출하여 인쇄 작업을 시작할 때 DOCINFO 구조체의 lpszOutput 멤버에서 이 "FILE:" 문자열을 지정합니다. 이 문자열을 지정하면 인쇄 하위 시스템이 출력 파일의 이름을 사용자에게 쿼리합니다.
PD_RETURNDC
0x00000100
PrintDlgEx 사용자가 속성 시트에서 선택한 항목과 일치하는 디바이스 컨텍스트를 반환하도록 합니다. 디바이스 컨텍스트는 hDC반환됩니다.
PD_RETURNDEFAULT
0x00000400
이 플래그가 설정되면 PrintDlgEx 함수는 속성 시트를 표시하지 않습니다. 대신 hDevNameshDevMode 멤버가 시스템 기본 프린터에 대해 초기화된 DEVNAMES 및 DEVMODE 구조를 처리하도록 설정합니다. hDevNameshDevMode 모두 NULL되거나 PrintDlgEx 오류를 반환해야 합니다.
PD_RETURNIC
0x00000200
PD_RETURNDC 플래그와 비슷하지만 이 플래그는 디바이스 컨텍스트가 아닌 정보 컨텍스트를 반환합니다. PD_RETURNDCPD_RETURNIC 지정하지 않으면 출력에 hDC 정의되지 않습니다.
PD_SELECTION
0x00000001
이 플래그를 설정하면 선택 라디오 단추가 선택됩니다. PD_PAGENUMS, PD_SELECTION또는 PD_CURRENTPAGE 플래그가 설정되지 않은 경우 모든 라디오 단추가 선택됩니다.
PD_USEDEVMODECOPIES
0x00040000
PD_USEDEVMODECOPIESANDCOLLATE.
PD_USEDEVMODECOPIESANDCOLLATE
0x00040000
이 플래그는 애플리케이션이 여러 복사본 및 데이터 정렬을 지원하는지 여부를 나타냅니다. 입력에 이 플래그를 설정하여 애플리케이션이 여러 복사본 및 데이터 정렬을 지원하지 않음을 나타냅니다. 이 경우 PRINTDLGEX 구조체의 nCopies 멤버는 항상 1을 반환하며 PD_COLLATEFlags 멤버에 설정되지 않습니다.

이 플래그가 설정되지 않은 경우 애플리케이션은 여러 복사본을 인쇄하고 정렬합니다. 이 경우 PRINTDLGEX 구조의 nCopies 멤버는 사용자가 인쇄하려는 복사본 수를 나타내고 Flags 멤버의 PD_COLLATE 플래그는 사용자가 데이터 정렬을 원하는지 여부를 나타냅니다.

이 플래그가 설정되었는지 여부에 관계없이 애플리케이션은 nCopies 결정하고 렌더링할 복사본 수와 데이터 정렬된 복사본을 인쇄할지 여부를 PD_COLLATE 수 있습니다.

이 플래그가 설정되어 있고 프린터 드라이버가 여러 복사본을 지원하지 않는 경우 복사본 편집 컨트롤이 비활성화됩니다. 마찬가지로 이 플래그가 설정되어 있고 프린터 드라이버가 데이터 정렬을 지원하지 않는 경우 데이터 정렬 확인란을 사용할 수 없습니다.

DEVMODE 구조체의 dmCopiesdmCollate 멤버에는 프린터 드라이버에서 사용하는 복사본 및 데이터 정렬 정보가 포함됩니다. 이 플래그가 설정되고 프린터 드라이버가 여러 복사본을 지원하는 경우 dmCopies 멤버는 사용자가 요청한 복사본 수를 나타냅니다. 이 플래그가 설정되고 프린터 드라이버가 데이터 정렬을 지원하는 경우 DEVMODE 구조의 dmCollate 멤버는 사용자가 데이터 정렬을 원하는지 여부를 나타냅니다. 이 플래그를 설정하지 않으면 dmCopies 멤버는 항상 1을 반환하고 dmCollate 멤버는 항상 0입니다.

Windows Vista 이전의 Windows 버전에서 호출 애플리케이션에서 이 플래그를 설정하지 않고 DEVMODE 구조체의 dmCopies 멤버가 1보다 큰 경우 복사본 수에 해당 값을 사용합니다. 그렇지 않으면 PRINTDLGEX 구조체의 nCopies 멤버 값을 사용합니다.

PD_USELARGETEMPLATE
0x10000000
속성 시트가 일반 페이지에 큰 서식 파일을 사용하도록 합니다. 더 큰 템플릿은 일반 페이지의 아래쪽 부분에 대한 사용자 지정 템플릿을 지정하는 애플리케이션에 더 많은 공간을 제공합니다.

Flags2

형식: DWORD

ExclusionFlags

형식: DWORD

인쇄 속성 시트의 프린터 드라이버 속성 페이지에서 항목을 제외할 수 있는 비트 플래그 집합입니다. 이 값은 PD_EXCLUSIONFLAGS 플래그가 Flags 멤버에 설정된 경우에만 사용됩니다. 제외 플래그는 제외할 항목이 일반 페이지 또는 인쇄 속성 시트의 애플리케이션 정의 페이지에 포함되는 경우에만 사용해야 합니다. 이 멤버는 다음 플래그를 지정할 수 있습니다.

PD_EXCL_COPIESANDCOLLATE

인쇄 속성 시트의 프린터 드라이버 속성 페이지에서 복사본데이터 정렬 컨트롤을 제외합니다. 이 플래그는 애플리케이션에서 기본 복사 사용하고 Print 속성 시트의 일반 페이지의 아래쪽 부분에서 제공하는 컨트롤을 때 항상 설정해야 합니다.

nPageRanges

형식: DWORD

입력 시 이 멤버를 lpPageRanges 배열에 지정된 초기 페이지 범위 수로 설정합니다. PrintDlgEx 함수가 반환되면 nPageRangeslpPageRanges 배열에 저장된 사용자 지정 페이지 범위의 수를 나타냅니다. PD_NOPAGENUMS 플래그를 지정하면 이 값이 유효하지 않습니다.

nMaxPageRanges

형식: DWORD

배열 요소에서 lpPageRanges 버퍼의 크기입니다. 이 값은 배열에 저장할 수 있는 페이지 범위의 최대 수를 나타냅니다. PD_NOPAGENUMS 플래그를 지정하면 이 값이 유효하지 않습니다. PD_NOPAGENUMS 플래그를 지정하지 않으면 이 값이 0보다 커야 합니다.

lpPageRanges

형식: LPPRINTPAGERANGE

PRINTPAGERANGE 구조의 배열을 포함하는 버퍼에 대한 포인터입니다. 입력 시 배열에는 Pages 편집 컨트롤에 표시할 초기 페이지 범위가 포함됩니다. PrintDlgEx 함수가 반환되면 배열에 사용자가 지정한 페이지 범위가 포함됩니다. PD_NOPAGENUMS 플래그를 지정하면 이 값이 유효하지 않습니다. PD_NOPAGENUMS 플래그를 지정하지 않으면 lpPageRangesNULL.

nMinPage

형식: DWORD

Pages 편집 컨트롤에 지정된 페이지 범위의 최소값입니다. PD_NOPAGENUMS 플래그를 지정하면 이 값이 유효하지 않습니다.

nMaxPage

형식: DWORD

Pages 편집 컨트롤에 지정된 페이지 범위의 최대값입니다. PD_NOPAGENUMS 플래그를 지정하면 이 값이 유효하지 않습니다.

nCopies

형식: DWORD

hDevMode NULL경우 편집 컨트롤을 복사본의 초기 복사본 수를 포함합니다. 그렇지 않으면 DEVMODE 구조체의 dmCopies 멤버에 초기 값이 포함됩니다. PrintDlgEx 반환되면 nCopies 애플리케이션에서 인쇄해야 하는 실제 복사본 수가 포함됩니다. 이 값은 애플리케이션 또는 프린터 드라이버가 여러 복사본을 인쇄할 책임이 있는지 여부에 따라 달라집니다. PD_USEDEVMODECOPIESANDCOLLATE 플래그가 Flags 멤버에 설정된 경우 nCopies 반환 시 항상 1이며 프린터 드라이버는 여러 복사본 인쇄를 담당합니다. 플래그가 설정되지 않은 경우 애플리케이션은 nCopies지정한 복사본 수를 인쇄합니다. 자세한 내용은 PD_USEDEVMODECOPIESANDCOLLATE 플래그에 대한 설명을 참조하세요.

hInstance

형식: HINSTANCE

PD_ENABLEPRINTTEMPLATE 플래그가 Flags 멤버에 설정된 경우 hInstancelpPrintTemplateName 멤버로 명명된 대화 상자 템플릿이 포함된 애플리케이션 또는 모듈 인스턴스에 대한 핸들입니다. PD_ENABLEPRINTTEMPLATEHANDLE 플래그가 Flags 멤버에 설정된 경우 hInstance 대화 상자 템플릿을 포함하는 메모리 개체에 대한 핸들입니다. Flags 멤버에 템플릿 플래그가 설정되지 않은 경우 hInstance NULL합니다.

lpPrintTemplateName

형식: LPCTSTR

hInstance 멤버로 식별되는 모듈의 대화 상자 템플릿 리소스 이름입니다. 이 템플릿은 일반 페이지의 아래쪽에 있는 기본 대화 상자 템플릿을 대체합니다. 기본 템플릿에는 인쇄 대화 상자와 유사한 컨트롤이 포함되어 있습니다. PD_ENABLEPRINTTEMPLATE 플래그가 Flags 멤버에 설정되지 않으면 이 멤버는 무시됩니다.

lpCallback

형식: LPUNKNOWN

애플리케이션 정의 콜백 개체에 대한 포인터입니다.

개체에는 일반 페이지의 아래쪽에 있는 자식 대화 상자에 대한 메시지를 수신하는 IPrintDialogCallback 클래스가 포함되어야 합니다.

콜백 개체에는 IPrintDialogServices 인터페이스에 대한 포인터를 수신하는 IObjectWithSite 클래스도 포함되어야 합니다. PrintDlgEx 함수는 IID_IPrintDialogCallbackIID_IObjectWithSite 모두 콜백 개체에서 IUnknown::QueryInterface 호출하여 지원되는 인터페이스를 결정합니다.

콜백 정보를 검색하지 않으려면 lpCallback NULL설정합니다.

nPropertyPages

형식: DWORD

lphPropertyPages 배열의 속성 페이지 핸들 수입니다.

lphPropertyPages

형식: HPROPSHEETPAGE*

인쇄 속성 시트에 추가할 속성 페이지 핸들의 배열을 포함합니다. 추가 속성 페이지는 일반 페이지를 따릅니다. CreatePropertySheetPage 함수를 사용하여 이러한 추가 페이지를 만듭니다. PrintDlgEx 함수가 반환되면 lphPropertyPages 배열의 모든 HPROPSHEETPAGE 핸들이 제거됩니다. nPropertyPages 0이면 lphPropertyPages NULL합니다.

nStartPage

형식: DWORD

처음에 표시되는 속성 페이지입니다. 일반 페이지를 표시하려면 START_PAGE_GENERAL지정합니다. 그렇지 않으면 lphPropertyPages 멤버에 지정된 배열에서 속성 페이지의 인덱스(0부터 시작하는 인덱스)를 지정합니다. 일관성을 위해 속성 시트는 항상 일반 페이지에서 시작하는 것이 좋습니다.

dwResultAction

형식: DWORD

입력 시 이 멤버를 0으로 설정합니다. PrintDlgEx 함수가 S_OK 반환하면 dwResultAction 대화 상자의 결과가 포함됩니다. PrintDlgEx 오류를 반환하는 경우 이 멤버는 무시되어야 합니다. dwResultAction 멤버는 다음 값 중 하나일 수 있습니다.

PD_RESULT_APPLY

사용자가 적용 단추를 클릭하고 나중에 취소 단추를 클릭했습니다. 이는 사용자가 속성 시트에서 변경한 내용을 적용하려고 하지만 아직 인쇄하지 않음을 나타냅니다. PRINTDLGEX 구조에는 적용 단추를 클릭할 때 사용자가 지정한 정보가 포함됩니다.

PD_RESULT_CANCEL

사용자가 취소 단추를 클릭했습니다. PRINTDLGEX 구조체의 정보는 변경되지 않습니다.

PD_RESULT_PRINT

사용자가 인쇄 단추를 클릭했습니다. PRINTDLGEX 구조체에는 사용자가 지정한 정보가 포함됩니다.

발언

hDevModehDevNames 모두 NULL경우 PrintDlgEx 현재 기본 프린터를 사용하여 속성 시트를 초기화합니다. 다른 프린터의 속성 시트를 초기화하려면 DEVNAMES 구조체의 wDeviceOffset 멤버를 사용하여 프린터의 이름을 지정합니다.

DEVMODE 구조체의 dmDeviceName 멤버도 프린터 이름을 지정합니다. 그러나 dmDeviceName 32자로 제한되며 wDeviceOffset 이름은 그렇지 않습니다. wDeviceOffsetdmDeviceName 이름이 같지 않으면 PrintDlgExwDeviceOffset지정한 프린터를 사용하여 속성 시트를 초기화합니다.

PD_RETURNDEFAULT 플래그가 설정되고 hDevModehDevNames 모두 NULL경우 PrintDlgEx hDevNameshDevMode 멤버를 사용하여 대화 상자를 표시하지 않고 현재 기본 프린터에 대한 정보를 반환합니다.

PrintDlgEx실행하는 동안 PRINTDLGEX 구조에 지정한 DEVMODEDEVNAMES 구조체에 항상 현재 데이터가 포함되지 않을 수 있습니다. 이러한 이유로 초기 페이지에 대한 IPrintDialogCallback 루틴뿐만 아니라 애플리케이션별 속성 페이지도 IPrintDialogServices 인터페이스를 사용하여 현재 프린터의 상태에 대한 정보를 검색해야 합니다.

메모

commdlg.h 헤더는 PRINTDLGEX를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한 규칙을 참조하세요.

요구 사항

요구
지원되는 최소 클라이언트 Windows 2000 Professional [데스크톱 앱만 해당]
지원되는 최소 서버 Windows 2000 Server [데스크톱 앱만 해당]
헤더 commdlg.h(Windows.h 포함)

참고 항목

일반 대화 상자 라이브러리

개념

DEVMODE

DEVNAMES

IPrintDialogCallback

IPrintDialogServices

PrintDlgEx

참조