다음을 통해 공유


PRINTDLGW 구조체(commdlg.h)

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

통사론

typedef struct tagPDW {
  DWORD           lStructSize;
  HWND            hwndOwner;
  HGLOBAL         hDevMode;
  HGLOBAL         hDevNames;
  HDC             hDC;
  DWORD           Flags;
  WORD            nFromPage;
  WORD            nToPage;
  WORD            nMinPage;
  WORD            nMaxPage;
  WORD            nCopies;
  HINSTANCE       hInstance;
  LPARAM          lCustData;
  LPPRINTHOOKPROC lpfnPrintHook;
  LPSETUPHOOKPROC lpfnSetupHook;
  LPCWSTR         lpPrintTemplateName;
  LPCWSTR         lpSetupTemplateName;
  HGLOBAL         hPrintTemplate;
  HGLOBAL         hSetupTemplate;
} PRINTDLGW, *LPPRINTDLGW;

회원

lStructSize

형식: DWORD

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

hwndOwner

형식: HWND

대화 상자를 소유하는 창에 대한 핸들입니다. 이 멤버는 유효한 창 핸들이거나 대화 상자에 소유자가 없는 경우 NULL 수 있습니다.

hDevMode

형식: HGLOBAL

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

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

지정한 프린터의 디바이스 드라이버가 확장된 디바이스 모드를 지원하지 않는 경우 PrintDlg 반환될 때 hDevMode NULL .

DEVMODE 구조체의 dmDeviceName 멤버로 지정된 디바이스 이름이 WIN의 [devices] 섹션에 표시되지 않는 경우 INI, PrintDlg 오류를 반환합니다.

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

hDevNames

형식: HGLOBAL

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

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

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

hDC

형식: HDC

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

Flags

형식: DWORD

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

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

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

PD_NOPAGENUMS참조하세요.

PD_DISABLEPRINTTOFILE
0x00080000
파일 인쇄 확인란을 사용하지 않도록 설정합니다.
PD_ENABLEPRINTHOOK
0x00001000
lpfnPrintHook 멤버에 지정된 후크 프로시저를 사용하도록 설정합니다. 이렇게 하면 인쇄 대화 상자에 후크 프로시저가 활성화됩니다.
PD_ENABLEPRINTTEMPLATE
0x00004000
hInstancelpPrintTemplateName 멤버가 기본 인쇄 대화 상자 서식 파일의 대체를 지정함을 나타냅니다.
PD_ENABLEPRINTTEMPLATEHANDLE
0x00010000
hPrintTemplate 멤버가 미리 로드된 대화 상자 템플릿을 포함하는 데이터 블록을 식별함을 나타냅니다. 이 템플릿은 인쇄 대화 상자의 기본 서식 파일을 대체합니다. 이 플래그가 지정된 경우 시스템에서 lpPrintTemplateName 멤버를 무시합니다.
PD_ENABLESETUPHOOK
0x00002000
lpfnSetupHook 멤버에 지정된 후크 프로시저를 사용하도록 설정합니다. 이렇게 하면 인쇄 설치 대화 상자에 대한 후크 프로시저가 활성화됩니다.
PD_ENABLESETUPTEMPLATE
0x00008000
hInstancelpSetupTemplateName 멤버가 기본 인쇄 설치 대화 상자 서식 파일의 대체를 지정함을 나타냅니다.
PD_ENABLESETUPTEMPLATEHANDLE
0x00020000
hSetupTemplate 멤버가 미리 로드된 대화 상자 템플릿을 포함하는 데이터 블록을 식별함을 나타냅니다. 이 템플릿은 인쇄 설치 대화 상자의 기본 서식 파일을 대체합니다. 이 플래그가 지정된 경우 시스템에서 lpSetupTemplateName 멤버를 무시합니다.
PD_HIDEPRINTTOFILE
0x00100000
파일 인쇄 확인란을 숨깁니다.
PD_NONETWORKBUTTON
0x00200000
네트워크 단추를 숨기고 사용하지 않도록 설정합니다.
PD_NOPAGENUMS
0x00000008
Pages 라디오 단추 및 연결된 편집 컨트롤을 사용하지 않도록 설정합니다. 또한 데이터 정렬 확인란이 대화 상자에 나타납니다.
PD_NOSELECTION
0x00000004
선택 라디오 단추를 사용하지 않도록 설정합니다.
PD_NOWARNING
0x00000080
기본 프린터가 없을 때 경고 메시지가 표시되지 않도록 합니다.
PD_PAGENUMS
0x00000002
이 플래그를 설정하면 페이지 라디오 단추가 선택됩니다. PrintDlg 함수가 반환될 때 이 플래그가 설정되면 nFromPagenToPage 멤버는 사용자가 지정한 시작 및 끝 페이지를 나타냅니다.
PD_PRINTSETUP
0x00000040
시스템에서 인쇄 대화 상자 대신 인쇄 설정 대화 상자를 표시합니다.
PD_PRINTTOFILE
0x00000020
이 플래그가 설정되면 파일 인쇄 확인란이 선택됩니다. PrintDlg 함수가 반환될 때 이 플래그가 설정되면 DEVNAMES 구조체의 wOutputOffset 멤버가 나타내는 오프셋에는 "FILE:" 문자열이 포함됩니다. StartDoc 함수를 호출하여 인쇄 작업을 시작할 때 DOCINFO 구조체의 lpszOutput 멤버에서 이 "FILE:" 문자열을 지정합니다. 이 문자열을 지정하면 인쇄 하위 시스템이 출력 파일의 이름을 사용자에게 쿼리합니다.
PD_RETURNDC
0x00000100
PrintDlg 사용자가 대화 상자에서 선택한 항목과 일치하는 디바이스 컨텍스트를 반환하도록 합니다. 디바이스 컨텍스트는 hDC반환됩니다.
PD_RETURNDEFAULT
0x00000400
이 플래그를 설정하면 PrintDlg 함수에 대화 상자가 표시되지 않습니다. 대신 hDevNameshDevMode 멤버를 DEVMODE 처리하고 시스템 기본 프린터에 대해 초기화된 DEVNAMES 구조를 설정합니다. hDevNameshDevMode 모두 NULL되거나 PrintDlg 오류를 반환해야 합니다.
PD_RETURNIC
0x00000200
PD_RETURNDC 플래그와 비슷하지만 이 플래그는 디바이스 컨텍스트가 아닌 정보 컨텍스트를 반환합니다. PD_RETURNDCPD_RETURNIC 지정하지 않으면 출력에 hDC 정의되지 않습니다.
PD_SELECTION
0x00000001
이 플래그를 설정하면 선택 라디오 단추가 선택됩니다. PD_PAGENUMS 또는 PD_SELECTION 설정되지 않은 경우 모든 라디오 단추가 선택됩니다.
PD_SHOWHELP
0x00000800
대화 상자에 도움말 단추가 표시되도록 합니다. hwndOwner 멤버는 사용자가 도움말 단추를 클릭할 때 대화 상자에서 보내는 HELPMSGSTRING 등록된 메시지를 받을 창을 지정해야 합니다.
PD_USEDEVMODECOPIES
0x00040000
PD_USEDEVMODECOPIESANDCOLLATE.
PD_USEDEVMODECOPIESANDCOLLATE
0x00040000
이 플래그는 애플리케이션이 여러 복사본 및 데이터 정렬을 지원하는지 여부를 나타냅니다. 입력에 이 플래그를 설정하여 애플리케이션이 여러 복사본 및 데이터 정렬을 지원하지 않음을 나타냅니다. 이 경우 PRINTDLG 구조체의 nCopies 멤버는 항상 1을 반환하며 PD_COLLATEFlags 멤버에 설정되지 않습니다.

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

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

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

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

Windows 2000/XP/2003에서 알려진 문제:PrintDlg호출하기 전에 이 플래그가 설정되지 않은 경우 PrintDlg 반환 시 nCopiesdmCopies 값을 교환할 수 있습니다. 이 문제에 대한 해결 방법은 dmCopies 값이 1보다 큰 경우 nCopies사용하여 printDlg 반환할 때 인쇄할 실제 복사본 수를 가져오는 .

 

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 및 Windows 7에서 PrintDlg 또는 PrintDlgEx 호출할 때 PD_RETURNDC TRUE 설정되고 PD_USEDEVMODECOPIESANDCOLLATE false 설정됩니다.PrintDlg 또는 PrintDlgEx 함수는 PRINTDLG 구조의 nCopies 멤버의 복사본 수를 설정합니다. 그리고 PRINTDLG 구조체의 hDC 멤버가 나타내는 구조체의 복사본 수를 설정합니다.

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

nFromPage

형식: WORD

시작 페이지 편집 컨트롤의 초기 값입니다.

PrintDlg 반환되면 nFromPage 사용자가 지정한 시작 페이지입니다. 사용자가 확인 단추를 클릭할 때 페이지 라디오 단추를 선택하면 PrintDlgPD_PAGENUMS 플래그를 설정하고 사용자가 최소 페이지 범위에서 최대 페이지 범위 내에 있는 시작 페이지 값을 입력할 때까지 반환되지 않습니다.

nFromPage 또는 nToPage 입력 값이 최소/최대 범위를 벗어나면 PrintDlgPD_PAGENUMS 플래그가 지정된 경우에만 오류를 반환합니다. 그렇지 않으면 대화 상자가 표시되지만 범위를 벗어난 값을 최소 또는 최대값으로 변경합니다.

nToPage

형식: WORD

끝 페이지 편집 컨트롤의 초기 값입니다. PrintDlg 반환되면 nToPage 사용자가 지정한 끝 페이지입니다. 페이지 라디오 단추를 선택한 경우 확인 단추를 클릭하면 PrintDlgPD_PAGENUMS 플래그를 설정하고 사용자가 최소 최대 페이지 범위 내의 끝 페이지 값을 입력할 때까지 반환되지 않습니다.

nMinPage

형식: WORD

FromTo 페이지 편집 컨트롤에 지정된 페이지 범위의 최소값입니다. nMinPage nMaxPage같으면 Pages 라디오 단추와 시작 및 끝 페이지 편집 컨트롤이 비활성화됩니다.

nMaxPage

형식: WORD

FromTo 페이지 편집 컨트롤에 지정된 페이지 범위의 최대값입니다.

nCopies

형식: WORD

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

hInstance

형식: HINSTANCE

PD_ENABLEPRINTTEMPLATE 또는 PD_ENABLESETUPTEMPLATE 플래그가 Flags 멤버에 설정된 경우 hInstancelpPrintTemplateName 또는 lpSetupTemplateName 멤버로 명명된 대화 상자 템플릿이 포함된 애플리케이션 또는 모듈 인스턴스에 대한 핸들입니다.

lCustData

형식: LPARAM

시스템에서 lpfnPrintHook 또는 lpfnSetupHook 멤버로 식별된 후크 프로시저에 전달하는 애플리케이션 정의 데이터입니다. 시스템에서 후크 프로시저에 WM_INITDIALOG 메시지를 보낼 때 메시지의 lParam 매개 변수는 대화 상자를 만들 때 지정된 PRINTDLG 구조체에 대한 포인터입니다. 후크 프로시저는 이 포인터를 사용하여 lCustData 값을 가져올 수 있습니다.

lpfnPrintHook

형식: LPPRINTHOOKPROC

인쇄 대화 상자에 대한 메시지를 처리할 수 있는 PrintHookProc 후크 프로시저에 대한 포인터입니다. Flags 멤버에서 PD_ENABLEPRINTHOOK 플래그를 설정하지 않으면 이 멤버는 무시됩니다.

lpfnSetupHook

형식: LPSETUPHOOKPROC

인쇄 설정 대화 상자에 대한 메시지를 처리할 수 있는 SetupHookProc 후크 프로시저에 대한 포인터입니다. PD_ENABLESETUPHOOK 플래그가 Flags 멤버에 설정되지 않는 한 이 멤버는 무시됩니다.

lpPrintTemplateName

형식: LPCTSTR

hInstance 멤버로 식별되는 모듈의 대화 상자 템플릿 리소스 이름입니다. 이 템플릿은 기본 인쇄 대화 상자 서식 파일을 대체합니다. Flags 멤버에서 PD_ENABLEPRINTTEMPLATE 플래그를 설정하지 않으면 이 멤버는 무시됩니다.

lpSetupTemplateName

형식: LPCTSTR

hInstance 멤버로 식별되는 모듈의 대화 상자 템플릿 리소스 이름입니다. 이 템플릿은 기본 인쇄 설정 대화 상자 서식 파일을 대체합니다. PD_ENABLESETUPTEMPLATE 플래그가 Flags 멤버에 설정되지 않으면 이 멤버는 무시됩니다.

hPrintTemplate

형식: HGLOBAL

PD_ENABLEPRINTTEMPLATEHANDLE 플래그가 Flags 멤버에 설정된 경우 hPrintTemplate 대화 상자 템플릿을 포함하는 메모리 개체에 대한 핸들입니다. 이 템플릿은 기본 인쇄 대화 상자 서식 파일을 대체합니다.

hSetupTemplate

형식: HGLOBAL

PD_ENABLESETUPTEMPLATEHANDLE 플래그가 Flags 멤버에 설정된 경우 hSetupTemplate 대화 상자 템플릿을 포함하는 메모리 개체에 대한 핸들입니다. 이 템플릿은 기본 인쇄 설정 대화 상자 서식 파일을 대체합니다.

발언

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

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

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

메모

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

요구 사항

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

참고 항목

일반 대화 상자 라이브러리

개념

DEVMODE

DEVNAMES

PrintDlg

참조

WM_INITDIALOG