Usare CPSUI con driver di stampante
Importante
La piattaforma di stampa moderna è il mezzo preferito di Windows per comunicare con le stampanti. Ti consigliamo di usare il driver di classe IPP di Microsoft, insieme a Print Support Apps (PSA), per personalizzare l'esperienza di stampa in Windows 10 e 11 per lo sviluppo di dispositivi per stampanti.
Per altre informazioni, vedere Piattaforma di stampa moderna e guida alla progettazione dell'app di supporto per la stampa.
Lo spooler di stampa, insieme alle DLL dell'interfaccia della stampante, usa CPSUI per creare pagine delle finestre delle proprietà per i documenti di stampa e i dispositivi stampanti. I passaggi seguenti sono necessari quando un'applicazione ,ad esempio Microsoft Word, visualizza una finestra delle proprietà per un documento di stampa:
L'applicazione chiama la funzione DocumentProperties dello spooler di stampa, specificando la stampante in cui deve essere stampato il documento.
Lo spooler di stampa chiama la funzione del punto di ingresso CPSUI CommonPropertySheetUI, specificando una funzione di callback tipizzata PFNPROPSHEETUI interna.
CPSUI chiama la funzione di callback tipizzata PFNPROPSHEETUI del spooler.
La funzione di callback tipizzata PFNPROPSHEETUI del spooler chiama la funzione ComPropSheet di CPSUI (con un codice funzione CPSFUNC_ADD_PFNPROPSHEETUI) per notificare all'CPSUI l'indirizzo della funzione DrvDocumentPropertySheets dell'interfaccia della stampante appropriata.
CPSUI chiama la funzione DrvDocumentPropertySheets della DLL dell'interfaccia della stampante.
La funzione DrvDocumentPropertySheets della DLL dell'interfaccia della stampante chiama la funzione ComPropSheet di CPSUI (in genere con un codice funzione CPSFUNC_ADD_PCOMPROPSHEETUI) per fornire a CPSUI descrizioni delle pagine delle proprietà e callback di eventi di pagina.
La funzione ComPropSheet di CPSUI chiama CreatePropertySheetPage (descritto nella documentazione di Windows SDK) per creare le pagine della finestra delle proprietà specificate dalla DLL dell'interfaccia della stampante. CPSUI chiama quindi PropertySheet per visualizzare le pagine della finestra delle proprietà.
Il diagramma seguente illustra questi passaggi.
Quando l'utente dell'applicazione attraversa le pagine della finestra delle proprietà e modifica i valori delle opzioni, il sistema operativo invia una notifica CPSUI di eventi di pagina e CPSUI, a sua volta, chiama il callback dell'evento di pagina fornito dalla DLL dell'interfaccia della stampante. Il callback dell'evento di pagina gestisce gli eventi della pagina e archivia internamente i valori delle opzioni appena selezionati, se necessario.
Quando l'utente ignora la finestra delle proprietà facendo clic sul pulsante Ok o Annulla , CPSUI elimina definitivamente le pagine e fa sì che la funzione CommonPropertySheetUI torni allo spooler di stampa, che quindi restituisce il controllo all'applicazione.
Quando un'applicazione visualizza una finestra delle proprietà per un dispositivo stampante anziché un documento di stampa, vengono eseguiti gli stessi passaggi, ad eccezione del fatto che l'applicazione chiama la funzione PrinterProperties dello spooler e lo spooler passa l'indirizzo della FUNZIONE DrvDevicePropertySheets dell'interfaccia della stampante a CPSUI.