PRINTDLGA 구조체(commdlg.h)

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

구문

typedef struct tagPDA {
  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;
  LPCSTR          lpPrintTemplateName;
  LPCSTR          lpSetupTemplateName;
  HGLOBAL         hPrintTemplate;
  HGLOBAL         hSetupTemplate;
} PRINTDLGA, *LPPRINTDLGA;

멤버

lStructSize

형식:DWORD

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

hwndOwner

형식: HWND

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

hDevMode

형식: HGLOBAL

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

입력 시 hDevModeNULL이면 PrintDlgDEVMODE 구조에 대한 메모리를 할당하고, 멤버를 초기화하여 사용자의 입력을 나타내고, 이를 식별하는 핸들을 반환합니다.

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

디바이스 이름(DEVMODE 구조의 dmDeviceName 멤버로 지정됨)이 WIN.INI [devices] 섹션에 나타나지 않으면 PrintDlg에서 오류가 반환됩니다.

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

hDevNames

형식: HGLOBAL

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

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

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

hDC

형식: HDC

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

Flags

형식:DWORD

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

의미
PD_ALLPAGES
0x00000000
모든 라디오 단추가 처음에 선택되었음을 나타내는 기본 플래그입니다. 이 플래그는 PD_PAGENUMS 및 PD_SELECTION 플래그가 지정되지 않았음을 나타내는 자리 표시자로 사용됩니다.
PD_COLLATE
0x00000010
이 플래그가 설정되면 Collate 검사 상자가 선택됩니다.

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 라디오 단추 및 연결된 편집 컨트롤을 사용하지 않도록 설정합니다. 또한 Collate 검사 상자가 대화 상자에 표시됩니다.
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 멤버를 시스템 기본 프린터에 대해 초기화된 DEVMODEDEVNAMES 구조체에 대한 핸들로 설정합니다. hDevNameshDevMode는 모두 NULL이어야 하며 PrintDlg는 오류를 반환합니다.
PD_RETURNIC
0x00000200
PD_RETURNDC 플래그와 비슷하지만 이 플래그는 디바이스 컨텍스트가 아닌 정보 컨텍스트를 반환합니다. PD_RETURNDC 또는 PD_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 값을 교환할 수 있습니다. 이 문제에 대한 해결 방법은 해당 값이 1보다 큰 경우 dmCopies 를 사용하고, 그렇지 않으면 nCopies를 사용하여 PrintDlg 가 반환될 때 인쇄할 실제 복사본 수를 가져오는 것입니다.

 

PrintDlg 또는 PrintDlgExDEVMODE 구조체의 dmCopiesdmCollate 멤버에서 올바른 값을 반환하도록 하려면TRUEPD_RETURNDC 설정하고 = TRUE를 PD_USEDEVMODECOPIESANDCOLLATE = . 이렇게 하면 PRINTDLG 구조체의 nCopies 멤버는 항상 1이고 PD_COLLATE 항상 FALSE입니다.

PrintDlg 또는 PrintDlgExnCopiesPD_COLLATE 올바른 값을 반환하도록 하려면PD_RETURNDC TRUE를 설정하고 = FALSE를 PD_USEDEVMODECOPIESANDCOLLATE = . 이렇게 하면 dmCopies 는 항상 1이고 dmCollate 는 항상 FALSE입니다.

Windows Vista 및 Windows 7에서 PD_RETURNDCTRUE로 설정된 PrintDlg 또는 PrintDlgEx를 호출하고 PD_USEDEVMODECOPIESANDCOLLATEFALSE로 설정하면 PrintDlg 또는 PrintDlgEx 함수는 PRINTDLG 구조체의 nCopies 멤버에 있는 복사본 수를 설정하고 PRINTDLG 구조체의 hDC 멤버가 나타내는 구조체의 복사본 수를 설정합니다.

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

nFromPage

형식: WORD

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

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

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

nToPage

형식: WORD

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

nMinPage

형식: WORD

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

nMaxPage

형식: WORD

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

nCopies

형식: WORD

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

hInstance

형식: HINSTANCE

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

lCustData

형식: LPARAM

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

lpfnPrintHook

형식: LPPRINTHOOKPROC

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

lpfnSetupHook

형식: LPSETUPHOOKPROC

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

lpPrintTemplateName

형식: LPCTSTR

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

lpSetupTemplateName

형식: LPCTSTR

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

hPrintTemplate

형식: HGLOBAL

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

hSetupTemplate

형식: HGLOBAL

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

설명

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

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

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

참고

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

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
머리글 commdlg.h(Windows.h 포함)

추가 정보

일반 대화 상자 라이브러리

개념

Devmode

DEVNAMES

PrintDlg

참조

WM_INITDIALOG