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

重要

新式打印平台是 Windows 与打印机通信的首选方式。 建议使用 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 函数调用 CreatePropertySheetPage(在 Windows SDK 文档中介绍)来创建打印机接口 DLL 指定的属性表页。 CPSUI 然后调用 PropertySheet 以显示属性表页。

下图演示了这些步骤。

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

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

当用户通过单击确定取消按钮消除属性表时,CPSUI 会销毁页面,并导致 CommonPropertySheetUI 函数返回给打印后台处理程序,然后后台打印程序将控制权返回给应用程序。

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