修改驱动程序提供的属性表页

UI 插件可以通过实现 IPrintUiUI::CommonUIProp 方法和回调函数来修改 Unidrv 提供的或 Pscript5 提供的属性表页。

UI 插件使用 IPrintUi::CommonUIProp 方法指定 CPSUI 可以在打印机属性表的 Device 设置 页或文档属性表的布局、纸张/质量和高级页中添加、删除或替换的一组选项项。

OEMCUIPCALLBACK 类型的回调函数用于处理用户对自定义选项项的修改。

添加选项项

UI 插件必须通过将新选项项放置在驱动程序提供的 OPTITEM 结构数组中来描述它们。 驱动程序的打印机接口 DLL 调用 UI 插件的 IPrintUi::CommonUIProp 方法两次。 首次调用 方法时,它应返回所需的 OPTITEM 结构数。 驱动程序为 OPTITEM 数组分配空间,并描述 OEMCUIPPARAM 结构中的 数组。 驱动程序再次调用 IPrintUi::CommonUIProp ,提供 OEMCUIPPARAM 结构的地址,以便方法可以使用选项说明加载 OPTITEM 结构。

删除选项项

若要从 Unidrv 或 Pscript5 提供的属性表页中删除选项,UI 插件的 IPrintUi::CommonUIProp 方法可以遍历 OEMCUIPPARAM 结构指向的 OPTITEM 结构数组。 对于要从属性表中删除的每个选项,可以设置 OPTITEM 结构的 OPTIF_HIDE 标志。 (请注意,这实际上不会删除 选项;它向用户隐藏 选项,以便用户无法更改其默认值。)

替换选项项

若要替换 Unidrv 或 Pscript 提供的属性表页中的选项,应按照前面的删除选项项部分下显示的说明删除现有选项项,然后按照前面的添加选项项部分下的说明创建新的选项项以替换旧选项项。

处理对自定义选项值的修改

若要处理用户对自定义选项项的修改,必须提供至少一个回调函数。 可以指定单个回调函数来处理文档属性表和打印机属性表的选项,也可以为每个回调函数指定单独的函数。 这些回调的类型为 OEMCUIPCALLBACK

通过将回调函数的地址置于 OEMCUIPPARAM 结构中来指定回调函数。 UI 插件接收此结构的地址作为 IPrintUi::CommonUIProp 方法的输入。

当用户打开打印机属性表或文档属性表并修改选项时, CPSUI 将调用打印机驱动程序的打印机接口 DLL。 此 DLL 处理包含在其自己的 OPTITEM 结构中的选项值。 然后,对于每个 UI 插件,打印机接口 DLL 将调用以前由 IPrintUi::CommonUIProp 指定的 OEMCUIPCALLBACK 类型的回调函数。