Usar CPSUI com drivers de impressora
Importante
A plataforma de impressão moderna é o meio preferencial do Windows para se comunicar com as impressoras. Recomendamos que você use o driver de classe de caixa de entrada IPP da Microsoft juntamente com PSA (Aplicativos de Suporte à Impressão) para personalizar a experiência de impressão no Windows 10 e 11 para o desenvolvimento de dispositivos de impressora.
Para obter mais informações, consulte Plataformade impressão moderna e o Guia de design do aplicativo de suporte de impressão.
O spooler de impressão, em conjunto com as DLLs da interface da impressora, usa o CPSUI para criar páginas de propriedades para documentos impressos e dispositivos de impressão. As etapas a seguir estão envolvidas quando um aplicativo (como o Microsoft Word) exibe uma folha de propriedades para um documento de impressão:
O aplicativo chama a função DocumentProperties do spooler de impressão, especificando a impressora na qual o documento deve ser impresso.
O spooler de impressão chama a função de ponto de entrada do CPSUI, CommonPropertySheetUI, especificando uma função interna de retorno de chamada do tipo PFNPROPSHEETUI.
O CPSUI chama a função de retorno de chamada do tipo PFNPROPSHEETUI do spooler.
A função de retorno de chamada do tipo PFNPROPSHEETUI do spooler chama a função ComPropSheet do CPSUI (com um código de função CPSFUNC_ADD_PFNPROPSHEETUI) para notificar o CPSUI do endereço da função DrvDocumentPropertySheets da DLL da interface de impressora apropriada.
O CPSUI chama a função DrvDocumentPropertySheets da DLL da interface da impressora.
A função DrvDocumentPropertySheets da DLL da interface da impressora chama a função ComPropSheet do CPSUI (normalmente com um código de função CPSFUNC_ADD_PCOMPROPSHEETUI) para fornecer ao CPSUI descrições de página de folha de propriedades e retornos de chamada de evento de página.
A função ComPropSheet do CPSUI chama CreatePropertySheetPage (descrito na documentação do SDK do Windows) para criar as páginas da folha de propriedades especificadas pela DLL da interface da impressora. Em seguida, o CPSUI chama PropertySheet para exibir as páginas da folha de propriedades.
O diagrama a seguir ilustra essas etapas.
À medida que o usuário do aplicativo percorre as páginas da folha de propriedades e modifica os valores de opção, o sistema operacional notifica o CPSUI sobre eventos de página e o CPSUI, por sua vez, chama o retorno de chamada de evento de página fornecido pela DLL da interface da impressora. O retorno de chamada de evento de página manipula eventos de página e armazena valores de opção recém-selecionados internamente, conforme necessário.
Quando o usuário ignora a folha de propriedades clicando no botão Ok ou Cancel, o CPSUI destrói as páginas e faz com que a função CommonPropertySheetUI retorne ao spooler de impressão, que retorna o controle ao aplicativo.
Quando um aplicativo exibe uma folha de propriedades para um dispositivo de impressora em vez de um documento de impressão, as mesmas etapas são seguidas, exceto que o aplicativo chama a função PrinterProperties do spooler e o spooler passa o endereço da função DrvDevicePropertySheets da DLL da interface da impressora para CPSUI.