极语言官方网站

打印对话框——打印作业

“ 打印 ”对话框允许用户选择特定打印作业的选项。

例如,用户可以指定要使用的打印机、要打印的页面范围和份数。

可以使用 打印选框 函数显示“打印属性表”,该页包含类似于“打印”对话框的控件的“常规”页。

属性表还可以在 “常规 ”页之后具有其他特定于应用程序的属性页和特定于驱动程序的属性页。

可以通过初始化 打印框类 结构并将结构传递给 打印选项 函数来创建并显示“打印”对话框。

下图显示了典型的“ 打印 ”对话框。

如果用户单击“ 确定” 按钮, 打印选项 将返回 TRUE ,并使用 打印框类 结构返回有关用户选择的信息。

例如, 环境 和 名称 成员通常返回 和 设备名称类 结构的全局内存句柄。

可以使用这些结构中的信息为所选打印机创建设备上下文或信息上下文。

如果用户取消“ 打印 ”对话框或发生错误, 打印选项 返回 FALSE。

可以使用 对话错误 函数检索扩展错误值来确定错误原因。

“ 打印 ”对话框包含一组单选按钮的 “打印范围 ”,这些按钮指示用户是要打印所有页面、一系列页面还是仅打印所选文本。

在调用 打印选项 之前,可以设置 0、1 或 2 标志之一,以指示最初选择哪个按钮。

打印选项 返回真时,函数将设置其中一个标志来指示用户的选择。

如果设置了2,打印框类结构的 首页 和 末页 成员包含用户指定的起始页和结束页。

若要禁用 “页面” 单选按钮及其关联的“ 发件人 ”和“ 要编辑” 控件,请设置 8 标志。

若要禁用 “选择” 单选按钮,请设置 4 标志。

该对话框包含一个编辑控件,用户可以在其中键入要打印的副本数。

如果 打印框类 结构的 环境 成员为非0,则结构的 份数 成员指定此编辑控件的初始值。

如果 环境 为0,打印框类结构的 份数 成员将指定初始值。

打印选项 返回时,份数 通常指示用户指定的副本数。

但是,如果在创建对话框时设置0x40000标志,份数 在返回时始终设置为 1,设备环境 的 份数 成员指示要打印的副本数。

“整理检查框指示在打印多个副本时用户是否要整理页面。

如果选择了“整理检查”框,则会设置0x10标志。

如果应用程序不支持多个副本或模拟排序规则,请在 打印框类 结构的 标志 成员中设置0x40000标志。

这将禁用“排序检查”框和“份数”编辑控件,除非打印机驱动程序支持多个副本和排序规则。

“打印到文件检查”框指示用户是否要将输出发送到文件而不是打印机。

可以设置0x20标志,以便最初选择检查框。 若要隐藏检查框,请设置0x100000标志。

若要禁用它,请设置 0x80000 标志。

如果用户选择“打印到文件”选项,打印选项 将设置0x20标志,

并在 设备名称类 结构的 wOutputOffset 成员指示的偏移量处返回“FILE:”。

调用 函数以启动打印操作时,请在结构的 lpszOutput 成员中指定此“FILE:”字符串。

指定此字符串会导致打印子系统向用户查询输出文件的名称。

默认情况下,“ 打印 ”对话框最初显示有关当前默认打印机的信息。

若要显示另一台已安装打印机的信息,请初始化 和 设备名称类 结构,并将结构的全局内存句柄分配给 环境 和 名称 成员。

设备环境 结构的 名称 成员和 设备名称 结构的 wDriverOffset 成员中指定的设备名称必须标识系统配置中的打印机设备。

否则打印选项将返回错误。

可以通过在 打印框类 结构的 标志 成员中设置 0x100 或 0x200 标志来指示 打印选项 为打印机创建设备上下文或信息上下文。

函数返回 hDC 成员中的设备上下文或信息上下文的句柄。

如果使用 0x100 标志,则可以使用设备上下文为打印机生成输出。

若要在不显示“ 打印 ”对话框的情况下检索有关默认打印机的信息,请设置 0x400 标志。

在这种情况下, 打印选项 在将 环境 和 名称 成员设置为包含信息的结构句柄后立即返回。

默认情况下, 打印选项 在发生错误时显示消息框。

例如,如果未安装打印机,函数会显示错误消息。 若要防止函数显示这些警告消息,请设置 0x80 标志。

可以通过在调用 打印选项 函数时设置 0x40 标志来创建和显示“打印设置”对话框。

但是,“ 打印设置 ”对话框已被 “页面设置 ”对话框取代,不应在新应用程序中使用。


示例代码:
打印框类 打印(长度=66,标志=0x40100,份数=1,首页=0xFFFF,末页=0xFFFF,最小=1,最大=0xFFFF);
//标志=0x40000支持多副本+0x100选择的设备
程序段 窗体启动;//以上代码为全局变量,在窗体启动程序段进行赋值
打印框.窗口=窗体;//指定打印对话框的窗口为程序主窗体
结束//换到其它地方书写代码
程序段 按钮2_点击;//在按钮2的点击事件里弹出打印对话框
如果(打印选项(打印))//使用打印框类调用打印选项弹出对话框
删除设备(打印.设备);//打印作业完成,删除设备。
结束//示例代码结束

打印框类

中文名字英文名称长度作用解释
打印框类PRINTDLG66   用来显示打印对话框或打印设置对话框。
打印框类——成员表
中文英文类型作用解释
长度lStructSize整数指定这个结构的大小,以字节为单位。
窗口hwndOwner整数拥有对话框的窗口的句柄。可不指定
环境hDevMode整数包含打印机设备与环境信息的DEVMODE结构句柄
名称hDevNames整数包含驱动器名、打印机名和输出端口名的设备名结构DEVNAMES句柄
设备hDC整数设备上下文或信息上下文的句柄,由Flags是否设置PD_RETURNDC或PC_RETURNIC标志来决定。
标志Flags整数用于打印公用对话框初始化的标志位
首页nFromPage整形指定开始页码编辑控件的初始值
末页nToPage整形指定结束页码编辑控件的初始值
最小nMinPage整形指定页码编辑控件的页码范围的最小值
最大nMaxPage整形指定页码编辑控件的页码范围的最大值
份数nCopies整形指定复制编辑控件的初始副本数
实例hInstance整数设置了 PD_ENABLEPRINTTEMPLATE 或 PD_ENABLESETUPTEMPLATE 标志
数据lCustData整数系统传递给挂钩过程的应用程序定义数据。
打印回调lpfnPrintHook整数指向 打印回调 挂钩过程的指针
设置回调lpfnSetupHook整数指向 打印设置 挂钩过程的指针
打印模板名lpPrintTemplateName整数程序模块中对话框模板资源的名称。
设置模板名lpSetupTemplateName整数设置了PD_ENABLESETUPTEMPLATE标志
打印模板hPrintTemplate整数设置了PD_ENABLEPRINTTEMPLATEHANDLE标志
设置模板hSetupTemplate整数设置了PD_ENABLESETUPTEMPLATEHANDLE标志

打印属性标志

英文名称数值作用解释
PD_ALLPAGES0x00000000默认标志,指示最初选择了“ 所有” 单选按钮。
PD_SELECTION0x00000001选择 “选择” 单选按钮。
PD_PAGENUMS0x00000002选择 “页面” 单选按钮。
PD_NOSELECTION0x00000004禁用“ 选择” 单选按钮。
PD_NOPAGENUMS0x00000008禁用 “页面” 单选按钮和关联的编辑控件。还会导致“整理检查”框显示在对话框中。
PD_COLLATE0x00000010选中整理检查框。
PD_PRINTTOFILE0x00000020选中“打印到文件检查框。
PD_PRINTSETUP0x00000040使系统显示“ 打印设置 ”对话框,而不是“ 打印 ”对话框。
PD_NOWARNING0x00000080防止在发生错误时显示警告消息。
PD_RETURNDC0x00000100返回与用户在属性表中所做的选择匹配的设备上下文。
PD_RETURNIC0x00000200与 PD_RETURNDC 标志类似,但此标志返回信息上下文而不是设备上下文。
PD_RETURNDEFAULT0x00000400不显示属性表。 而是将 名称 和 环境 成员设置为系统默认打印机初始化的结构句柄。
PD_SHOWHELP0x00000800使对话框显示“ 帮助 ”按钮。
PD_ENABLEPRINTHOOK0x00001000启用 在 打印回调 成员中指定的挂钩过程。 这将启用“ 打印 ”对话框的挂钩过程。
PD_ENABLESETUPHOOK0x00002000启用 在 设置回调 成员中指定的挂钩过程。这将启用“ 打印设置 ”对话框的挂钩过程。
PD_ENABLEPRINTTEMPLATE0x00004000指示 实例 和 模板 成员指定“ 常规 ”页下半部分中默认对话框模板的替换项。
PD_ENABLESETUPTEMPLATE0x00008000指示 实例 和 设置模板名 成员指定默认 打印设置 对话框模板的替换项。
PD_ENABLEPRINTTEMPLATEHANDLE0x00010000指示 实例 成员标识包含预加载对话框模板的数据块。
PD_ENABLESETUPTEMPLATEHANDLE0x00020000指示 设置模板 成员标识包含预加载对话框模板的数据块。
PD_USEDEVMODECOPIESANDCOLLATE0x00040000此标志指示应用程序是否支持多个副本和排序规则。
PD_DISABLEPRINTTOFILE0x00080000禁用打印到文件检查框。
PD_HIDEPRINTTOFILE0x00100000隐藏“打印到文件检查框。
PD_NONETWORKBUTTON0x00200000隐藏和禁用“ 网络 ”按钮。
PD_CURRENTPAGE0x00400000选择 “当前页” 单选按钮。
PD_NOCURRENTPAGE0x00800000禁用 “当前页” 单选按钮。
PD_EXCLUSIONFLAGS0x01000000指示 排除 成员标识要从打印机驱动程序属性页中排除的项目。
PD_USELARGETEMPLATE0x10000000强制属性表对 “常规 ”页使用大型模板。