页面设置对话框——设置打印页属性
显示允许用户设置打印页的以下属性的模式对话框:
纸张类型 (信封、法律、信件等)
纸张源 (手动进纸、拖拉机进纸、纸张送纸器等)
页面方向 (纵向或横向)
页边距的宽度
通过初始化 页面框类 结构并将该结构传递给 页面设置 函数,可以创建并显示“页面设置”对话框。
但是,对话框中显示的属性因打印机的功能而异。 下图显示了典型的 “页面设置 ”对话框。
如果用户单击“确定”按钮,在 页面框类 结构中设置各种成员以指定用户的选择后,页面设置将返回真。
纸宽、纸高、左宽、上宽、右宽、下宽 等成员得到用户指定的值。
环境 和 名称 成员包含 设备环境、名称类 结构的全局内存句柄。
这些结构包含其他页面信息以及有关打印机的信息。 可以使用此信息准备要发送到所选打印机的输出。
如果用户取消“ 页面设置 ”对话框或发生错误, 页面设置 将返回假。
若要确定错误的原因,请调用 对话错误 函数来检索扩展的错误值。
示例代码:

示例代码:
页面框类 页面(长度=84,标志=0x40005,左宽=1250,上宽=1000,右宽=1250,下宽=1000); //标志=4千分之一英寸+1指定边距+0x40000启用重绘回调 程序段 窗体启动;//以上代码为全局变量,在窗体启动程序段进行赋值 页面.窗口=窗体;//指定页面设置框的窗口为程序主窗体 页面.重绘回调=@设置回调;//指定页面设置框的重绘回调为设置回调,也可以指定为窗体消息 结束//换到其它地方书写代码 程序段 设置回调(窗口,消息,设备,矩形类 数据);//设置回调跟窗体消息相同 判断(消息)为 0x403//此为页面设置对话框边距矩形的消息 {边框=取元素色(13);//获取系统高亮颜色 画笔=创建画笔(3,1,边框)//使用交替的短划线和点创建笔宽为1的画笔 选择对象(设备,画笔)//回调函数的第三参数是打印的设备 画方块(设备,数据.左,数据.顶,数据.宽,数据.高)}//在打印设备上绘制矩形方块 结束//示例代码结束
打印对话框-回调函数
中文名称 | 英文名称 | 示例 | 作用 |
打印回调 | Lpprinthookproc | 打印回调(窗口,消息,参数,数据) | 接收用于 “打印 ”对话框的默认对话框过程的消息或通知。 |
打印设置 | Lpsetuphookproc | 打印设置(窗口,消息,参数,数据) | 与 打印选项 函数一起使用的挂钩过程接收消息或通知。适用于 “打印设置 ”对话框 |
页面绘图 | Lppagepainthook | 页面绘图(窗口,消息,参数,数据) | 接收允许您在“ 页面设置 ”对话框中自定义示例页面绘图的消息。 |
页面回调 | Lppagesetuphook | 页面回调(窗口,消息,参数,数据) | 接收用于 “页面设置 ”对话框的默认对话框过程的消息或通知。 |
页面框类
中文名字 | 英文名称 | 长度 | 作用解释 |
页面框类 | PAGESETUPDLG | 84 | 用来显示打印对话框或打印设置对话框。 |
页面框类——成员表 | |||
---|---|---|---|
中文 | 英文 | 类型 | 作用解释 |
长度 | lStructSize | 整数 | 指定这个结构的大小,以字节为单位。 |
窗口 | hwndOwner | 整数 | 拥有对话框的窗口的句柄。可不指定 |
环境 | hDevMode | 整数 | 包含打印机设备与环境信息的DEVMODE结构句柄 |
名称 | hDevNames | 整数 | 包含驱动器名、打印机名和输出端口名的设备名结构DEVNAMES句柄 |
标志 | Flags | 整数 | 用于打印公用对话框初始化的标志位 |
纸宽 | ptPaperSize.x | 整数 | 指定用户选择的纸张的宽度 |
纸高 | ptPaperSize.y | 整数 | 确指定用户选择的纸张的高度 |
左边 | rtMinMargin.left | 整数 | 指定左边距的最小允许宽度 |
上边 | rtMinMargin.top | 整数 | 指定上边距的最小允许宽度 |
右边 | rtMinMargin.right | 整数 | 指定右边距的最小允许宽度 |
下边 | rtMinMargin.bottom | 整数 | 指定下边距的最小允许宽度 |
左宽 | rtMargin.left | 整数 | 指定左边距的宽度 |
上宽 | rtMargin.top | 整数 | 指定上边距的宽度 |
右宽 | rtMargin.right | 整数 | 指定右边距的宽度 |
下宽 | rtMargin.bottom | 整数 | 指定下边距的宽度 |
实例 | hInstance | 整数 | 程序实例,很少使用 |
数据 | lCustData | 整数 | 指定系统传递给设置回调过程的应用程序定义数据 |
设置回调 | lpfnPageSetupHook | 整数 | 挂接回调过程的指针,可以处理针对该对话框的消息,可忽略 |
重绘回调 | lpfnPagePaintHook | 整数 | 挂钩回调过程的指针,重新绘制示例页面时,可在收到消息时自定义样本页面的外观 |
设置模板名 | lpPageSetupTemplateName | 整数 | 对话框模板资源的名称,可忽略 |
设置模板 | hPageSetupTemplate | 整数 | 包含对话框模板的内存对象的句柄 |
页面设置选项
中文名字 | 英文名称 | 作用解释 |
PSD_DEFAULTMINMARGINS | 0x00000000 | 将用户可以为页边距指定的最小值设置为打印机允许的最小页边距。 这是默认值。 如果还指定 了PSD_MARGINS 和 PSD_MINMARGINS 标志,则忽略此标志。 |
PSD_DISABLEMARGINS | 0x00000010 | 禁用边距控件,防止用户设置边距。 |
PSD_DISABLEORIENTATION | 0x00000100 | 禁用方向控件,从而阻止用户设置页面方向。 |
PSD_DISABLEPAGEPAINTING | 0x00080000 | 阻止对话框绘制示例页的内容。 如果启用 页面绘图 挂钩过程,仍可以绘制示例页面的内容。 |
PSD_DISABLEPAPER | 0x00000200 | 禁用纸张控件,防止用户设置页面参数,例如纸张大小和来源。 |
PSD_DISABLEPRINTER | 0x00000020 | 已过时。Windows XP/2000:禁用“ 打印机 ”按钮,防止用户调用包含其他打印机设置信息的对话框。 |
PSD_ENABLEPAGEPAINTHOOK | 0x00040000 | 启用 重绘回调 成员中指定的挂钩过程。 |
PSD_ENABLEPAGESETUPHOOK | 0x00002000 | 启用 设置回调 成员中指定的挂钩过程。 |
PSD_ENABLEPAGESETUPTEMPLATE | 0x00008000 | 指示 实例 和 设置模板名 成员指定要用于替代默认模板的对话框模板。 |
PSD_ENABLEPAGESETUPTEMPLATEHANDLE | 0x00020000 | 指示 设置模板 成员标识包含预加载对话框模板的数据块。 如果指定了此标志,系统将忽略 设置模板名 成员。 |
PSD_INHUNDREDTHSOFMILLIMETERS | 0x00000008 | 指示百分之一毫米是边距和纸张大小的度量单位。可以在输入时设置此标志,以替代用户区域设置的默认度量单位。 |
PSD_INTHOUSANDTHSOFINCHES | 0x00000004 | 指示千分之一英寸是边距和纸张大小的度量单位。函数返回时,对话框会设置此标志以指示使用的单位。 |
PSD_INWININIINTLMEASURE | 0x00000000 | 保留。 |
PSD_MARGINS | 0x00000002 | 使系统使用指定的值作为左、上、右和下边距的初始宽度。如果未设置 PSD_MARGINS ,系统将所有边距的初始宽度设置为 1 英寸。 |
PSD_MINMARGINS | 0x00000001 | 使系统使用指定的值作为左、上、右和下边距的最小允许宽度。系统会阻止用户输入小于指定最小值的宽度。 |
PSD_NONETWORKBUTTON | 0x00200000 | 隐藏和禁用“ 网络 ”按钮。 |
PSD_NOWARNING | 0x00000080 | 防止系统在没有默认打印机时显示警告消息。 |
PSD_RETURNDEFAULT | 0x00000400 | 不显示对话框。将 环境 和 名称 成员设置为为系统默认打印机初始化的 设备环境、名称类 结构的句柄。 |
PSD_SHOWHELP | 0x00000800 | 使对话框显示 “帮助” 按钮。 窗口 成员必须指定窗口,以接收当用户单击“帮助”按钮时对话框发送的 HELPMSGSTRING 注册消息。 |
纸张或信封的方向
——常量定义数值 | 作用解释 |
0x0001 | 横向模式下的纸张 (点阵) |
0x0003 | 横向模式下的纸张 (HPPCL) |
0x0005 | 纵向模式下的纸张 (点阵) |
0x0007 | 纵向模式下的纸张 (HPPCL) |
0x000b | 横向模式下的信封 (HPPCL) |
0x000d | 纵向模式下的信封 (点阵) |
0x0019 | 横向模式下的信封 (点阵) |
0x001f | 纵向模式下的信封 (HPPCL) |