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成员
  PD_SELECTION(0x01) 指定“选定范围”单选钮在初始时被选中
  PD_SHOWHELP(0x800) 使对话框显示帮助按钮,在用户单击帮助按钮时对话框会发送HELPMSGSTRING注册消息,hwndOwner成员必须指定接受该消息的窗口
  PD_USEDEVMODECOPIES(0x40000) 同PD_USEDEVMODECOPIESANDCOLLATE
  PD_USEDEVMODECOPIESANDCOLLATE(0x40000) 指定你的应用程序不支持多份打印与自动分页(缺省标志)。此时PRINTDLG结构的nCopies成员总是返回1,而且PD_COLLATE决不被设置
举例:
PRINTDLG pd ;
memset( &pd, , sizeof( PRINTDLG ) ) ;
pd.lStructSize = sizeof( PRINTDLG ) ;
pd.hwndOwner = m_hWnd ;
pd.hDevMode = m_hDevMode ;
pd.hDevNames = m_hDevNames ;
pd.hDC = NULL ;
pd.Flags = PD_RETURNDC | PD_SELECTION | PD_NOPAGENUMS | PD_COLLATE ;
pd.nFromPage = ;
pd.nToPage = ;
pd.nMinPage = ;
pd.nMaxPage = ;
pd.nCopies = ;
pd.hInstance = NULL ;
pd.lCustData = 0L ;
pd.lpfnPrintHook = NULL ;
pd.lpfnSetupHook = NULL ;
pd.lpPrintTemplateName = NULL ;
pd.lpSetupTemplateName = NULL ;
pd.hPrintTemplate = NULL ;
pd.hSetupTemplate = NULL ; if ( !PrintDlg( &pd ) )
return ; if ( NULL != pd.hDevMode )
::GlobalFree( pd.hDevMode ) ; if ( NULL != pd.hDevNames )
::GlobalFree( pd.hDevNames ) ;
效果:

再来一个例子:
PRINTDLG pd ;
memset( &pd, , sizeof( PRINTDLG ) ) ;
pd.lStructSize = sizeof( PRINTDLG ) ;
pd.Flags = PD_PRINTSETUP ;
pd.hDevMode = m_hDevMode ;
pd.hDevNames = m_hDevNames ; if ( PrintDlg( &pd ) )
{
m_hDevMode = pd.hDevMode ;
m_hDevNames = pd.hDevNames ;
}

PRINTDLG 打印对话框操作的更多相关文章
- UWP开发入门(二十四)—— Win10风格的打印对话框
		
虽然经常看到阿迪王发“看那个开发UWP的又上吊了”的图……还是忍不住重启一下这个系列.最近有用到UWP的print API,特地来写一篇给某软的这个伟大构想续一秒. 之前的打印对话框差不多长成这样: ...
 - C# 使用printDocument1.Print打印时不显示 正在打印对话框
		
C#使用printDocument1.Print打印时不显示正在打印对话框有两种方法 第一种,使用PrintController PrintController printControll ...
 - C# 使用printDocument1.Print打印时不显示 正在打印对话框(里面还有一个讨厌的取消按钮)
		
C#使用printDocument1.Print打印时不显示正在打印对话框有两种方法 第一种,使用PrintController PrintController printController = n ...
 - FastReport.Net使用:[1]屏蔽打印对话框
		
1.如何设置默认打印机 在FastReport设计界面找到File->Printer Setup菜单,运行该菜单显示“打印机设置”对话框.在打印机(Printer)列表中选择默认打印机,并勾上“ ...
 - CAD如何直接打印,不出现打印对话框?
		
主要用到函数说明: MxDrawXCustomFunction::Mx_Print 直接打印,不出现打印对话框,详细说明如下: 参数 说明 double ptLBx 打印的范围左下角x double ...
 - CAD直接打印,不出现打印对话框(com接口VB语言)
		
主要用到函数说明: MxDrawXCustomFunction::Mx_Print 直接打印,不出现打印对话框,详细说明如下: 参数 说明 double ptLBx 打印的范围左下角x double ...
 - PyQt中弹出对话框操作
		
经常有初学者搞不清楚如何在PyQt中弹出对话框,以及如何处理返回值.这篇文章会举例说明,界面采用手工编写. 我们一般说的对话框指的是模态对话框(Modal Dialogue Box),一旦弹出,就不能 ...
 - html 打印相关操作与实现
		
2020-02-19 | chrome 79.0.3945.130 测试无问题 未做兼容测试 原理为调用 window.print() 方法,但是该方法只能对当前页面全部打印,所以有了以下方案来解决局 ...
 - 吴裕雄--天生自然JAVAIO操作学习笔记:内存操作流、管道流与打印流操作
		
import java.io.* ; class Send implements Runnable{ // 线程类 private PipedOutputStream pos = null ; // ...
 
随机推荐
- Simple JavaScript Inheritance(John Resig)
			
I’ve been doing a lot of work, lately, with JavaScript inheritance – namely for my work-in-progress ...
 - libcurl库的使用(通过libcurl库下载url图像) 【转】
			
http://www.linuxidc.com/Linux/2015-09/123609.htm?utm_source=tuicool&utm_medium=referral libcurl库 ...
 - 【Hadoop】HDFS客户端开发示例
			
1.原理.步骤 2.HDFS客户端示例代码 package com.ares.hadoop.hdfs; import java.io.FileInputStream; import java.io.F ...
 - 支付宝支付系统繁忙,请稍后再试(ALI64)错误解决
			
解决方法:将商户支付參数的seller邮箱换成与partner同样的数字串,依然无法支付请检查所给參数
 - Linux学习笔记 (五)关机和重启命令
			
一.关机命令 1.shutdown命令: shutdown [选项] [时间] 选项: -c:取消前一个关机命令 -h:关机 -r:重启 例:shutdown -r 05:30 & //表 ...
 - python——TypeError: 'str' does not support the buffer interface
			
import socket import sys port=51423 host="localhost" data=b"x"*10485760 #在字符串前加 ...
 - grid 布局一 固定宽度+自适应宽度
			
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
 - GIT基本概念和用法总结【转】
			
在日常使用GIT过程中,经常会出错,比如无意间丢失了未提交的数据,回退版本时丢失了工作目录,等等.经过思考发现,所有这些错误都是因为对GIT中一些基本的概念模糊而导致,因为对一些基本概念不清晰,导致对 ...
 - CASE WHEN 的用法
			
Case具有两种格式.简单Case函数和Case搜索函数. 简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...
 - 【分享】Nginx日志分析(上)
			
在很多时候,我们会非常关注网站的访问量,比如网站的日PV是多少.网站某个功能上线之后点击量是多少,像这些东西都是需要从web容器中的访问日志统计出来的,下面我们看一下如何在nginx中统计网站的访问信 ...