将 CPSUI 与打印机驱动程序配合使用
重要
新式打印平台是 Windows 与打印机通信的首选方式。 建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) 来自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。
有关详细信息,请参阅新式打印平台和打印支持应用设计指南。
打印后台处理程序与打印机接口 DLL 结合使用,使用 CPSUI 为打印文档和打印机设备创建属性表页。 当应用程序(如 Microsoft Word)显示打印文档的属性表时,将涉及以下步骤:
应用程序调用打印后台处理程序的 DocumentProperties 函数,并指定要打印文档的打印机。
打印后台处理程序调用 CPSUI 的入口点函数 CommonPropertySheetUI,并指定内部 PFNPROPSHEETUI 类型的回调函数。
CPSUI 调用后台处理程序的 PFNPROPSHEETUI 类型回调函数。
后台处理程序的 PFNPROPSHEETUI 类型的回调函数调用 CPSUI 的 ComPropSheet 函数(具有 CPSFUNC_ADD_PFNPROPSHEETUI 函数代码),以通知 CPSUI 相应的打印机接口 DLL 的 DrvDocumentPropertySheets 函数的地址。
CPSUI 调用打印机接口 DLL 的 DrvDocumentPropertySheets 函数。
打印机接口 DLL 的 DrvDocumentPropertySheets 函数调用 CPSUI 的 ComPropSheet 函数(通常具有 CPSFUNC_ADD_PCOMPROPSHEETUI 函数代码),以便为 CPSUI 提供属性页描述和页面事件回调。
CPSUI 的 ComPropSheet 函数调用 CreatePropertySheetPage(在 Windows SDK 文档中介绍)来创建打印机接口 DLL 指定的属性表页。 CPSUI 然后调用 PropertySheet 以显示属性表页。
下图演示了这些步骤。
当应用程序用户遍历属性表页并修改选项值时,操作系统会通知 CPSUI 页面事件,CPSUI 进而调用打印机接口 DLL 提供的页面事件回调。 页面事件回调处理页面事件,并根据需要在内部存储新选择的选项值。
当用户通过单击确定或取消按钮消除属性表时,CPSUI 会销毁页面,并导致 CommonPropertySheetUI 函数返回给打印后台处理程序,然后后台打印程序将控制权返回给应用程序。
当应用程序显示打印机设备的属性表而不是打印文档时,将遵循相同的步骤,除了应用程序调用后台处理程序的 PrinterProperties 函数,后台处理程序将打印机接口 DLL 的 DrvDevicePropertySheets 函数的地址传递给 CPSUI。