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 打印对话框操作的更多相关文章

  1. UWP开发入门(二十四)—— Win10风格的打印对话框

    虽然经常看到阿迪王发“看那个开发UWP的又上吊了”的图……还是忍不住重启一下这个系列.最近有用到UWP的print API,特地来写一篇给某软的这个伟大构想续一秒. 之前的打印对话框差不多长成这样: ...

  2. C# 使用printDocument1.Print打印时不显示 正在打印对话框

    C#使用printDocument1.Print打印时不显示正在打印对话框有两种方法 第一种,使用PrintController       PrintController printControll ...

  3. C# 使用printDocument1.Print打印时不显示 正在打印对话框(里面还有一个讨厌的取消按钮)

    C#使用printDocument1.Print打印时不显示正在打印对话框有两种方法 第一种,使用PrintController PrintController printController = n ...

  4. FastReport.Net使用:[1]屏蔽打印对话框

    1.如何设置默认打印机 在FastReport设计界面找到File->Printer Setup菜单,运行该菜单显示“打印机设置”对话框.在打印机(Printer)列表中选择默认打印机,并勾上“ ...

  5. CAD如何直接打印,不出现打印对话框?

    主要用到函数说明: MxDrawXCustomFunction::Mx_Print 直接打印,不出现打印对话框,详细说明如下: 参数 说明 double ptLBx 打印的范围左下角x double ...

  6. CAD直接打印,不出现打印对话框(com接口VB语言)

    主要用到函数说明: MxDrawXCustomFunction::Mx_Print 直接打印,不出现打印对话框,详细说明如下: 参数 说明 double ptLBx 打印的范围左下角x double ...

  7. PyQt中弹出对话框操作

    经常有初学者搞不清楚如何在PyQt中弹出对话框,以及如何处理返回值.这篇文章会举例说明,界面采用手工编写. 我们一般说的对话框指的是模态对话框(Modal Dialogue Box),一旦弹出,就不能 ...

  8. html 打印相关操作与实现

    2020-02-19 | chrome 79.0.3945.130 测试无问题 未做兼容测试 原理为调用 window.print() 方法,但是该方法只能对当前页面全部打印,所以有了以下方案来解决局 ...

  9. 吴裕雄--天生自然JAVAIO操作学习笔记:内存操作流、管道流与打印流操作

    import java.io.* ; class Send implements Runnable{ // 线程类 private PipedOutputStream pos = null ; // ...

随机推荐

  1. DEDECMS之0day入侵总结

    1.查看dedecms最后升级版本:http://xxx.com/data/admin/ver.txt 2.利用网上公开之0day进行对应版本之入侵 ps:dedecms默认CMS后台:http:// ...

  2. 接入WebSocket记录 + 一些个人经验

    闲扯 WebSocket 以前没用过,之前写过一篇博客是基于原生socket的(查看)比较复杂,慎入.今天另外一个APP需要接websocket了,然后便找到了facebook的 SocketRock ...

  3. cpp面向对象编程

    如下图,先建好文件, 这里用的是Visual studio 2010 当然也可以用eclipse for cpp,如下图: AbstractShape.h #ifndef ABSTRACTSHAPE_ ...

  4. [转载]Oracle批量执行

    FROM: http://www.cnblogs.com/wangyayun/p/4514411.html //批量添加20000条数据用时8秒. try { String url = "j ...

  5. Spark(十一) -- Mllib API编程 线性回归、KMeans、协同过滤演示

    本文测试的Spark版本是1.3.1 在使用Spark的机器学习算法库之前,需要先了解Mllib中几个基础的概念和专门用于机器学习的数据类型 特征向量Vector: Vector的概念是和数学中的向量 ...

  6. 1-N中1出现的次数

    /*标记1-N中1出现的次数.例如,当N等于18时,1出现的次数为2 + 9 = 11 个位数出现1的为:1,11,十位数出现1的为10-18*/public class OneNoInN { // ...

  7. RocketMQ性能压测分析(转)

    原创文章,转载请注明出处:http://jameswxx.iteye.com/blog/2093785 一   机器部署 1.1  机器组成 1台nameserver 1台broker  异步刷盘 2 ...

  8. spring的jar包maven地址,统一下载很方便

    最近spring的官网改版了,想下个jar包,还得maven什么的,由于急于开发,懒得整那些个啦,在网上找了个spring的各版本的jar包地址,特此共享下: http://maven.springf ...

  9. 虚拟机下安装CentOS无法上网的解决方式

    我使用VMware虚拟机安装Ubuntu和CentOS,都使用NAT模式连接网络,可是Ubutun能够正常上网,而CentOS不能连接到网络. 原来Centos7默认是不启用有线网卡的.须要手动开启. ...

  10. CefSharp.WinForms

    CefSharp.WinForms 一.  前言 银医通项目,现在另外一家医院需要上系统,所以项目需要重新搭建,由于这家医院的His系统和另外一家医院的His系统不同,界面风格也不一致,所以重新搭建, ...