将 CPSUI 与打印机驱动程序配合使用

重要

建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) ,自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。

有关详细信息,请参阅 打印支持应用设计指南

打印后台处理程序与 打印机接口 DLL 结合使用,使用 CPSUI 为打印文档和打印机设备创建属性表页。 当应用程序 ((如 Microsoft Word) )显示打印文档的属性表时,需要执行以下步骤:

  1. 应用程序调用打印后台处理程序的 DocumentProperties 函数,指定要打印文档的打印机。

  2. 打印后台处理程序调用 CPSUI 的入口点函数 CommonPropertySheetUI,指定内部 PFNPROPSHEETUI 类型回调函数。

  3. CPSUI 调用后台处理程序的 PFNPROPSHEETUI 类型的回调函数。

  4. 后台处理程序的 PFNPROPSHEETUI 类型的回调函数调用 CPSUI 的 ComPropSheet 函数 (,) CPSFUNC_ADD_PFNPROPSHEETUI 函数代码以通知 CPSUI 相应打印机接口 DLL 的 DrvDocumentPropertySheets 函数的地址。

  5. CPSUI 调用打印机接口 DLL 的 DrvDocumentPropertySheets 函数。

  6. 打印机接口 DLL 的 DrvDocumentPropertySheets 函数调用 CPSUI 的 ComPropSheet 函数 (通常使用 CPSFUNC_ADD_PCOMPROPSHEETUI 函数代码) 来为 CPSUI 提供属性表页说明和 页面事件回调

  7. CPSUI 的 ComPropSheet 函数调用 Windows SDK 文档) 中所述的 CreatePropertySheetPage (,以创建打印机接口 DLL 指定的属性表页。 CPSUI 然后调用 PropertySheet 以显示属性表页。

下图演示了这些步骤。

说明显示属性表所涉及的模块的示意图。

当应用程序用户遍历属性表页并修改选项值时,操作系统会通知 CPSUI 页面事件和 CPSUI,进而调用打印机接口 DLL 提供的页面事件回调。 页面事件回调处理页面事件,并根据需要在内部存储新选择的选项值。

当用户通过单击“ 确定” 或“ 取消 ”按钮关闭属性表时,CPSUI 会销毁页面,并使 CommonPropertySheetUI 函数返回到打印后台处理程序,然后打印后台处理程序将控件返回到应用程序。

当应用程序显示打印机设备的属性表而不是打印文档时,将遵循相同的步骤,只不过应用程序调用后台处理程序的 PrinterProperties 函数,后台处理程序将打印机接口 DLL 的 DrvDevicePropertySheets 函数的地址传递给 CPSUI。