Usar CPSUI con controladores de impresora
Importante
La plataforma de impresión moderna es el medio preferido de Windows para comunicarse con impresoras. Se recomienda usar el controlador de clase de bandeja de entrada IPP de Microsoft, junto con aplicaciones de soporte técnico de impresión (PSA), para personalizar la experiencia de impresión en Windows 10 y 11 para el desarrollo de dispositivos de impresora.
Para obtener más información, consulte Plataforma de impresión moderna y la Guía de diseño de aplicaciones para compatibilidad con impresión.
La cola de impresión, junto con las DLL de interfaz de impresora, usa CPSUI para crear páginas de hoja de propiedades para documentos de impresión y dispositivos de impresión. Los siguientes pasos están involucrados cuando una aplicación (como Microsoft Word) muestra una hoja de propiedades para un documento de impresión:
La aplicación llama a la función DocumentProperties de la cola de impresión, especificando la impresora en la que se va a imprimir el documento.
La cola de impresión llama a la función de punto de entrada de CPSUI, CommonPropertySheetUI, especificando una función interna de llamada de retorno PFNPROPSHEETUI.
CPSUI llama a la función de llamada de retorno PFNPROPSHEETUI de la cola.
La función de devolución de llamada PFNPROPSHEETUI de cola llama a la función ComPropSheet de CPSUI (con un código de función CPSFUNC_ADD_PFNPROPSHEETUI) para notificar a CPSUI la dirección de la función DrvDocumentPropertySheets de la DLL de la interfaz de impresora apropiada.
CPSUI llama a la función DrvDocumentPropertySheets de la DLL de interfaz de impresora.
La función DrvDocumentPropertySheets de la DLL de la interfaz de impresora llama a la función ComPropSheet de CPSUI (normalmente con un código de función CPSFUNC_ADD_PCOMPROPSHEETUI) para proporcionar a CPSUI descripciones de página de hoja de propiedades y llamadas de eventos de página.
La función ComPropSheet de CPSUI llama a CreatePropertySheetPage (descrita en la documentación del SDK de Windows) para crear las páginas de hoja de propiedades especificadas por la DLL de interfaz de impresora. CPSUI entonces llama a PropertySheet para mostrar las páginas de la hoja de propiedades.
El siguiente diagrama ilustra estos pasos.
Mientras el usuario de la aplicación recorre las páginas de la hoja de propiedades y modifica los valores de las opciones, el sistema operativo notifica a CPSUI los eventos de página y CPSUI, a su vez, llama a la llamada de retorno de evento de página suministrada por la DLL de interfaz de impresora. La llamada de retorno de evento de página maneja los eventos de página y almacena los nuevos valores de opción seleccionados internamente, como sea necesario.
Cuando el usuario descarta la hoja de propiedades haciendo clic en el botón Aceptar o Cancelar, CPSUI destruye las páginas y causa que la función CommonPropertySheetUI vuelva al spooler de impresión, que entonces devuelve el control a la aplicación.
Cuando una aplicación muestra una hoja de propiedades para un dispositivo de impresión en lugar de un documento de impresión, se siguen los mismos pasos, excepto que la aplicación llama a la función PrinterProperties de la cola y la cola pasa la dirección de la función DrvDevicePropertySheets de la DLL de la interfaz de impresora a CPSUI.