Modification d’une page de feuille de propriétés Driver-Supplied

Important

Nous vous recommandons d’utiliser le pilote de classe de boîte de réception IPP de Microsoft, ainsi que les applications de support d’impression (PSA), pour personnaliser l’expérience d’impression dans Windows 10 et 11 pour le développement de périphériques d’imprimante.

Pour plus d’informations, consultez le Guide de conception de l’application de support d’impression.

Un plug-in d’interface utilisateur peut modifier les pages de feuille de propriétés fournies par Unidrv ou Pscript5 en implémentant la méthode IPrintOemUI::CommonUIProp et une fonction de rappel.

Le plug-in d’interface utilisateur utilise la méthode IPrintOemUI::CommonUIProp pour spécifier un ensemble d’éléments d’option que CPSUI peut ajouter, supprimer ou remplacer dans la page Paramètres du périphérique de la feuille de propriétés de l’imprimante ou dans les pages Layout, Paper/Quality et Advanced de la feuille de propriétés du document.

La fonction de rappel, de type OEMCUIPCALLBACK, est utilisée pour traiter les modifications apportées par l’utilisateur aux éléments d’option personnalisés.

Ajout d’éléments d’option

Votre plug-in d’interface utilisateur doit décrire les nouveaux éléments d’option en les plaçant dans un tableau de structures OPTITEM fournies par le pilote. La DLL de l’interface d’imprimante du pilote appelle deux fois la méthode IPrintOemUI::CommonUIProp du plug-in d’interface utilisateur. La première fois que la méthode est appelée, elle doit retourner le nombre de structures OPTITEM requises. Le pilote alloue de l’espace pour un tableau OPTITEM et décrit le tableau dans une structure OEMCUIPPARAM . Le pilote appelle à nouveau IPrintOemUI::CommonUIProp , en fournissant l’adresse de la structure OEMCUIPPARAM, afin que la méthode puisse charger les structures OPTITEM avec des descriptions d’options.

Suppression d’éléments d’option

Pour supprimer une option d’une page de feuille de propriétés fournie par Unidrv ou Pscript5, la méthode IPrintOemUI::CommonUIProp de votre plug-in d’interface utilisateur peut parcourir le tableau de structures OPTITEM pointées par la structure OEMCUIPPARAM . Pour chaque option que vous souhaitez supprimer de la feuille de propriétés, vous pouvez définir l’indicateur OPTIF_HIDE de la structure OPTITEM. (Notez que cela ne supprime pas réellement l’option ; elle masque l’option à l’utilisateur afin que l’utilisateur ne puisse pas modifier sa valeur par défaut.)

Remplacement des éléments d’option

Pour remplacer une option dans une page de feuille de propriétés fournie par Unidrv ou Pscript, vous devez suivre les instructions indiquées sous la section Suppression des éléments d’option précédente pour supprimer l’élément d’option existant, puis suivre les instructions de la section précédente Ajout d’éléments d’option pour créer un nouvel élément d’option afin de remplacer l’ancien.

Gestion des modifications apportées aux valeurs d’option personnalisées

Pour traiter les modifications apportées par l’utilisateur aux éléments d’option personnalisés, vous devez fournir au moins une fonction de rappel. Vous pouvez spécifier une seule fonction de rappel qui gère les options pour la feuille de propriétés du document et la feuille des propriétés de l’imprimante, ou vous pouvez spécifier une fonction distincte pour chacune d’elles. Ces rappels sont de type OEMCUIPCALLBACK.

Une fonction de rappel est spécifiée en plaçant son adresse dans une structure OEMCUIPPARAM . Le plug-in d’interface utilisateur reçoit l’adresse de cette structure en tant qu’entrée de sa méthode IPrintOemUI::CommonUIProp .

Lorsqu’un utilisateur ouvre la feuille de propriétés d’imprimante ou la feuille de propriétés du document et modifie les options, CPSUI appelle la DLL de l’interface d’imprimante du pilote d’imprimante. Cette DLL traite les valeurs d’option contenues dans ses propres structures OPTITEM . Ensuite, pour chaque plug-in d’interface utilisateur, la DLL d’interface d’imprimante appelle la fonction de rappel de type OEMCUIPCALLBACK qui a été précédemment spécifiée par IPrintOemUI::CommonUIProp.