标题：PrintDlg
PrintDlg函数
函数功能：该函数显示打印对话框或打印设置对话框。打印对话框使用户指定特殊的打印工作的特点。
打印设置对话框不能应用在新应用程序中，它已经被PageSetupDlg函数创建的打印设置公共对话框所替代。
函数原型：BOOL PrintDlg(LPPRINTDLG lppd);
参数：
lppd：指向一个含有初始化对话框信息的PRINTDLG结构。当PRINTDLG函数返回时，此结构含有关用户选择的信息。
返回值：如果用户点击OK按钮，返回值为非零值。由lppd参数指向的PRINTDLG结构中的成员显示用户的选择。如果用户取消或关闭Print或PrinterSetup对话框或错误出现，返回值为零。若想获得更多的错误信息，请调用CommDlgError函数。如果用户取消或关闭对话框，函数返回零值：否则，返回值如下：
CDERR_FINDRESFAILURE PDERR_CRETELCFAILUPE
COERR_INITIALIZATION PDERR_DEFAULTDIFFERENT
CDERR_LOADRESFAILURE PDERR_DNDMMISMATCH
CDERR_LOADSTRFAILURE PDERR_GETDEVMODEFAIL
CKERR_LOCKRESFAILURE PDERR_INITFAILURE
CDERR_MEMALLOCFAILURE PDERR LOADDRVFAILURE
CDERR_MEMLOCKFAILURE PDERR_NODEFAULTPRN
CDERR_NOHINSTANCE PDERR_NODEVICES
CDFRR_NOHOOK PDERR_PARSEFAILURE
CDERR_NOTEMPLATE PDERR_PRINTERNOTFOUND
CDERR_STRUCTSIZE PDERR_RETDEFFAILURE
备注：如果挂钩函数（由PRINTDLG结构中的lpfnPrintHOOk成员或lpfnSetupHOOk成员指向的）处理WM_CTLCOLORDLG信息，挂钩函数必须返回一个刷子句柄，此刷了用来刷控制背景。
Windows NT 5.0以及以后的版本：可用PrintDlgEx函数来显示一个Print属性页，此属性页有一个含有Print公共对话框相似的控制的General页，其控制与Print公共对话框中的控制相似。
Windows CE：PRINTDLG结构包含Windows CE中不同的成员。
速查：WindowsNT：3.1及以上版本；Windows：95及以上版本；WindowsCE：2.0及以上版本；头文件：commdlg.h；库文件：comdlg32.lih；Unicode：在Windows NT环境中实现为Unicode和ANSI两个版本。
PrintDlg结构体
typedef struct tagPD{
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;
LPCTSTR lpPrintTemplateName;
LPCTSTR lpSetupTemplateName;
HGLOBAL hPrintTemplate;
HGLOBAL hSetupTemplate;
}PRINTDLG, *LPPRINTDLG;
lStructSize：本结构大小(字节数)
hwndOwner：父窗口句柄(可为NULL)
hDevMode：包含打印机设备与环境信息的DEVMODE结构句柄
hDevNames：包含驱动器名、打印机名和输出端口名的设备名结构DEVNAMES句柄
hDC：确定DC或IC(information context)，由Flags是否设置PD_RETURNDC或PC_RETURNIC标志来决定
Flags：用于打印公用对话框初始化的标志位
nFromPage：指定开始页码编辑控件的初始值
nToPage：指定结束页码编辑控件的初始值
nMinPage：指定开始/结束页码编辑控件的页码范围的最小值，若nMinPage=nMaxPage，则“页码范围”单选钮和开始/结束页码编辑控件被灰化
nMaxPage：指定开始/结束页码编辑控件的页码范围的最大值
nCopies：指定拷贝份数编辑控件的初始值
hInstance：以下结构成员很少使用
lCustData：
lpfnPrintHook：
lpfnSetupHook：
lpPrintTemplateName：
lpSetupTemplateName：
hPrintTemplate：
hSetupTemplate：
Flags初始化标志
PD_ALLPAGES(0x00) 指定“全部”单选钮在初始时被选中(缺省标志)
PD_COLLATE(0x10) 指定“自动分页”复选框在初始时被选中
PD_DISABLEPRINTTOFILE(0x80000) 使打印到文件复选框失效
PD_ENABLEPRINTHOOK
PD_ENABLEPRINTTEMPLATE
PD_ENABLEPRINTTEMPLATEHANDLE
PD_ENABLESETUPHOOK
PD_ENABLESETUPTEMPLATE
PD_ENABLESETUPTEMPLATEHANDLE
PD_HIDEPRINTTOFILE(0x100000) 隐藏“打印到文件”复选框(缺省标志)
PD_NONETWORKBUTTON(0x200000) 隐藏网络按钮
PD_NOPAGENUMS(0x08) 使“页码范围”单选钮和开始/结束页码编辑控件失效(缺省标志)
PD_NOSELECTION(0x04) 使“选定范围”单选钮失效(缺省标志)
PD_NOWARNING(0x80) 防止系统在没有缺省打印机时显示警告消息
PD_PAGENUMS(0x02) 指定“页码范围”单选钮在初始时被选中，若返回时该标志位被设置，则nFromPage与nFromPage中为用户设置的开始与结束页码
PD_PRINTSETUP(0x40) 使系统显示打印设置对话框而不是打印对话框
PD_PRINTTOFILE(0x20) 指定“打印到文件”复选框在初始时被选中
PD_RETURNDC(0x100) 使打印对话框返回与用户选择相匹配的DC到hDC成员
PD_RETURNDEFAULT(0x400) 不显示打印对话框，将hDevNames与hDevMode分别设置为用系统缺省打印机来初始化的结构DEVMODE与DEVNAMES的句柄
PD_RETURNIC(0x200) 使打印对话框返回与用户选择相匹配的IC到hDC成员[1]
PD_SELECTION(0x01) 指定“选定范围”单选钮在初始时被选中
PD_SHOWHELP(0x800) 使对话框显示帮助按钮，在用户单击帮助按钮时对话框会发送HELPMSGSTRING注册消息，hwndOwner成员必须指定接受该消息的窗口
PD_USEDEVMODECOPIES(0x40000) 同PD_USEDEVMODECOPIESANDCOLLATE
PD_USEDEVMODECOPIESANDCOLLATE(0x40000) 指定你的应用程序不支持多份打印与自动分页(缺省标志)。此时PRINTDLG结构的nCopies成员总是返回1，而且PD_COLLATE决不被设置