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 ; // ...
随机推荐
- cs-SelectTree-DropTreeNode, SelectTreeList
ylbtech-Unitity: cs-SelectTree-DropTreeNode, SelectTreeList DropTreeNode.cs SelectTreeList.cs 1.A,效果 ...
- http://www.oschina.net/question/1019034_153316
http://www.oschina.net/question/1019034_153316 http://www.oschina.net/question/97503_212116?sort=tim ...
- LeetCode(28)Implement strStr()
题目 Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if nee ...
- perl学习笔记——哈希
哈希 哈希是一种数据结构,它和数组的相似之处在于可以容难任意多的值并能按需取用,而他和数组的不同在于索引的方式,数组是以数字为索引而哈希则是以名字为索引. 哈希的键是唯一的,哈希的值可以重复. 哈希的 ...
- 怎样优化cocos2d/x程序的内存使用和程序大小
再次感谢原创者:Steffen Itterheim.原创博客原文地址: http://www.learn-cocos2d.com/2012/11/optimize-memory-usage-bundl ...
- Python——网络编程,如何避免死锁?
问题描述:什么是死锁? 死锁发生在当一个服务器和客户端同时试图往一个连接上写东西或同时从一个连接上读的时候.在这种情况下,没有进程可以得到任何数据(如果它们都正在读),因此,如果它们正在写,向外的bu ...
- (转)jquery实现图片轮播
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- redislive
安装Redis Live监控服务 分类: redis 2014-06-25 20:24 436人阅读 评论(0) 收藏 举报 redis redis live为监控redis服务的软件,带有监控web ...
- (一)Redis笔记——简介 、key 、数据类型
1. Redis是什么.特点.优势 Redis是一个开源的使用C语言编写.开源.支持网络.可基于内存亦可持久化的日志型.高性能的Key-Value数据库,并提供多种语言的API. 它通常被称为数据结 ...
- linux 设置tomcat快捷启动方式
在linux下搭建好tomcat之后,每次启动和关闭都要去tomcat的bin目录下执行./startup.sh和./shutdown.sh 这是很不方便的,下面介绍如何像执行ls mv cp等命令一 ...