Structure OPTITEM (compstui.h)

La structure OPTITEM est utilisée par les applications CPSUI (y compris les DLL d’interface d’imprimante) pour décrire une option de feuille de propriétés sur une page de feuille de propriétés, si la page est décrite par une structure COMPROPSHEETUI .

Syntaxe

typedef struct _OPTITEM {
  WORD      cbSize;
  BYTE      Level;
  BYTE      DlgPageIdx;
  DWORD     Flags;
  ULONG_PTR UserData;
  LPTSTR    pName;
  union {
    LONG   Sel;
    LPTSTR pSel;
  } DUMMYUNIONNAME;
  union {
    PEXTCHKBOX pExtChkBox;
    PEXTPUSH   pExtPush;
  } DUMMYUNIONNAME2;
  POPTTYPE  pOptType;
  DWORD     HelpIndex;
  BYTE      DMPubID;
  BYTE      UserItemID;
  WORD      wReserved;
  POIEXT    pOIExt;
  ULONG_PTR dwReserved[3];
} OPTITEM, *POPTITEM;

Membres

cbSize

Taille, en octets, de la structure OPTITEM .

Level

Spécifie le niveau de cette option dans l’arborescence. Pour plus d’informations, consultez la section Remarques ci-dessous.

DlgPageIdx

Identifie la boîte de dialogue à laquelle l’option appartient. Spécifie un index de tableau dans le tableau DLGPAGE pointé par le membre pDlgPage de la structure COMPROPSHEETUI .

Si pDlgPage pointe vers une structure DLGPAGE prédéfinie fournie par CPSUI, CPSUI fournit cet index.

Flags

Indicateurs de bits facultatifs qui modifient les caractéristiques de l’option. L’indicateur OPTIF_CHANGEONCE est défini par CPSUI ; tous les autres indicateurs sont définis par l’appelant. Vous pouvez définir n’importe quelle combinaison des indicateurs suivants.

OPTIF_CALLBACK

Lorsqu’un utilisateur modifie l’option, CPSUI doit appeler la fonction de rappel de type _CPSUICALLBACK spécifiée dans la structure COMPROPSHEETUI .

OPTIF_CHANGED

La fonction de rappel _CPSUICALLBACK doit définir cet indicateur si elle a modifié l’option, de sorte que CPSUI la réaffiche.

OPTIF_CHANGEONCE

CPSUI définit ce bit si un utilisateur a modifié l’option.

OPTIF_COLLAPSE

Réduisez cette option et ses enfants afin qu’elle ne soit pas développée dans l’arborescence.

OPTIF_DISABLED

Désactive l’option afin qu’elle ne soit pas modifiable par l’utilisateur.

OPTIF_ECB_CHECKED

La zone de case activée étendue associée est dans l’état coché.

OPTIF_EXT_IS_EXTPUSH

S’il est défini, le membre pExtPush est valide (sauf null).

S’il n’est pas défini, le membre pExtChkBox est valide (sauf si NULL).

OPTIF_EXT_DISABLED

La zone de case activée étendue ou le bouton pousseur étendu ne peut pas être sélectionné.

OPTIF_EXT_HIDE

CPSUI n’affiche pas la zone de case activée étendue ou le bouton poussoir étendu.

OPTIF_HAS_POIEXT

S’il est défini, le membre pOIExt est valide.

OPTIF_HIDE

CPSUI n’affiche pas cette option dans l’arborescence. CPSUI examine cet indicateur uniquement lors de la création initiale de l’arborescence, de sorte que la modification de l’indicateur à partir de sa valeur initiale n’a aucun effet.

OPTIF_INITIAL_TVITEM

Si cette option est définie, CPSUI définit le focus de fenêtre initiale sur cette option lorsqu’elle affiche l’arborescence. CPSUI développe les nœuds d’arborescence et fait défiler l’option dans la vue si nécessaire. Si l’option est masquée ou si cet indicateur n’est défini pour aucune structure OPTITEM, CPSUI choisit le focus initial.

OPTIF_NO_GROUPBOX_NAME

S’il n’est pas défini et que pOptype n’est pas égal à zéro, CPSUI utilise la chaîne pName comme titre de la zone de groupe.

S’il est défini, CPSUI fournit un titre de zone de groupe.

OPTIF_OVERLAY_NO_ICON

Si définir CPSUI superpose son icône de IDI_CPSUI_NO sur l’icône associée à l’option . (Voir le membre Sel/pSel .)

OPTIF_OVERLAY_STOP_ICON

Si la valeur est définie, CPSUI superpose son icône IDI_CPSUI_STOP sur l’icône associée à l’option. (Voir le membre Sel/pSel .)

OPTIF_OVERLAY_WARNING_ICON

Si la valeur est définie, CPSUI superpose son icône IDI_CPSUI_WARNING sur l’icône associée à l’option. (Voir le membre Sel/pSel .)

OPTIF_SEL_AS_HICON

S’il est défini, le membre Sel contient un handle d’icône.

S’il n’est pas défini, le membre Sel contient un identificateur de ressource d’icône.

Cet indicateur ne peut être utilisé que lorsque pOptType contient NULL.

UserData

Valeur 32 bits facultative qui peut être définie et utilisée par l’appelant.

(Les DLL d’interface d’imprimante pour Unidrv et Pscript utilisent ce membre pour fournir un pointeur vers une structure USERDATA . Les plug-ins d’interface utilisateur peuvent référencer cette structure.)

pName

Identificateur de chaîne représentant un nom d’option localisé et affichable. Il peut s’agir d’un pointeur 32 bits vers une chaîne terminée par NULL, ou d’un identificateur de ressource de chaîne 16 bits, avec HIWORD défini sur zéro. (Consultez également la description de DMPubID ci-dessous.)

DUMMYUNIONNAME

DUMMYUNIONNAME.Sel

Cette union indique la valeur du paramètre actuellement sélectionné de l’option. Son utilisation dépend du type d’option CPSUI.

Si pOptType a la valeur NULL, l’option n’a aucun paramètre. Cette union identifie donc une icône à associer au nœud treeview de l’option. L’identificateur d’icône peut être un handle d’icône ou un identificateur de ressource d’icône, comme indiqué par OPTIF_SEL_AS_HICON dans Indicateurs.

DUMMYUNIONNAME.pSel

Cette union indique la valeur du paramètre actuellement sélectionné de l’option. Son utilisation dépend du type d’option CPSUI.

Si pOptType a la valeur NULL, l’option n’a aucun paramètre. Cette union identifie donc une icône à associer au nœud treeview de l’option. L’identificateur d’icône peut être un handle d’icône ou un identificateur de ressource d’icône, comme indiqué par OPTIF_SEL_AS_HICON dans Indicateurs.

DUMMYUNIONNAME2

Définit l’union DUMMYUNIONNAME2 .

DUMMYUNIONNAME2.pExtChkBox

Pointeur vers la structure EXTCHKBOX

DUMMYUNIONNAME2.pExtPush

Cette union peut être un pointeur vers une structure EXTCHKBOX , un pointeur vers une structure EXTPUSH ou NULL.

Une structure OPTITEM peut éventuellement avoir une structure EXTCHKBOX, une structure EXTPUSH ou aucun des deux. Si cette union n’est pas NULL et si OPTIF_EXT_IS_EXTPUSH est défini dans Indicateurs, pExtPush est valide. Si l’indicateur n’est pas défini, pExtChkBox est valide.

pOptType

Pointeur vers une structure OPTTYPE qui décrit le type d’affichage de l’option. Si la valeur est NULL, l’option n’a aucun paramètre et est utilisée comme parent pour les options avec une valeur de niveau supérieure. Les options enfants doivent suivre immédiatement le parent dans le tableau OPTITEM. (Voir la section Remarques suivante.)

HelpIndex

Index du fichier d’aide, qui identifie le texte d’aide à associer à l’option. Si zéro, le texte du fichier d’aide n’existe pas pour cette option. Notez que le membre pOIExt de cette structure doit être défini avec l’adresse d’une structure OIEXT pour que la fonctionnalité de texte d’aide existe.

DMPubID

Ce membre est destiné à être utilisé par les DLL d’interface d’imprimante lors de la création d’une feuille de propriétés Propriétés du document (voir DrvDocumentPropertySheets). Il s’agit d’une valeur constante qui spécifie quel, le cas échéant, le membre public de la structure DEVMODEW est associé à cette option. Le tableau suivant répertorie les constantes disponibles, le membre de structure DEVMODE associé et la valeur requise pour pName pour chaque constante.

Valeur constante Valeur pName requise Membre de structure
DMPUB_COLOR dmColor IDS_CPSUI_COLOR_APPERANCE
DMPUB_COPIES_COLLATE dmCopies et dmCollate IDS_CPSUI_COPIES
DMPUB_DEFSOURCE dmDefSource IDS_CPSUI_SOURCE
DMPUB_DITHERTYPE dmDitherType IDS_CPSUI_DITHERING
DMPUB_DUPLEX dmDuplex IDS_CPSUI_DUPLEX
DMPUB_FORMNAME dmFormName IDS_CPSUI_FORMNAME
DMPUB_ICMINTENT dmICMIntent IDS_CPSUI_ICMINTENT
DMPUB_ICMMETHOD dmICMMethod IDS_CPSUI_ICMMETHOD
DMPUB_MEDIATYPE dmMediaType IDS_CPSUI_MEDIA
DMPUB_NUP Non contenu dans la section publique de DEVMODE. IDS_CPSUI_NUP
DMPUB_ORIENTATION dmOrientation IDS_CPSUI_ORIENTATION
DMPUB_OUTPUTBIN Non contenu dans la section publique de DEVMODE. IDS_CPSUI_OUTPUTBIN
DMPUB_PAGEORDER Non contenu dans la section publique de DEVMODE. IDS_CPSUI_PAGEORDER
DMPUB_PRINTQUALITY dmPrintQuality IDS_CPSUI_PRINTQUALITY ou IDS_CPSUI_RESOLUTION. S’il n’est pas spécifié, le nom par défaut est IDS_CPSUI_RESOLUTION.
DMPUB_QUALITY Non contenu dans la section publique de DEVMODE. IDS_CPSUI_QUALITY_SETTINGS
DMPUB_SCALE dmScale IDS_CPSUI_SCALE
DMPUB_TTOPTION dmTTOption IDS_CPSUI_TTOPTION
DMPUB_NONE Non contenu dans la section publique de DEVMODE.
Supérieur ou égal à DMPUB_USER Ignoré par CPSUI, peut être une valeur définie par l’appelant.

CPSUI ne gère pas de structure DEVMODE. L’application est chargée de copier les paramètres d’option sélectionnés par l’utilisateur dans une structure DEVMODE . CPSUI utilise le contenu DMPubID pour déterminer l’emplacement des arborescences des options standard et pour déterminer le contenu des onglets Disposition et Papier/Qualité (voir le membre pDlgPage de la structure COMPROPSHEETUI ).

Pour plus d’informations sur l’utilisation du membre DMPubID , consultez la section Notes suivante.

UserItemID

Valeur facultative fournie par l’application qui peut être utilisée à des fins d’identification d’option. Non référencé par CPSUI.

wReserved

Réservé, doit être initialisé à zéro.

pOIExt

Pointeur vers une structure OIEXT facultative. L’appelant est responsable de l’allocation du stockage pour cette structure.

dwReserved[3]

Réservé, doit être initialisé à zéro.

Remarques

Les structures OPTITEM doivent être placées dans un tableau et l’adresse du tableau doit être placée dans le membre pOptItem d’une structure COMPROPSHEETUI .

Le membre Level vous permet de créer des nœuds enfants dans l’arborescence. Par exemple, pour créer un ensemble de nœuds d’option sous un nœud parent de niveau 1, spécifiez le niveau 2 pour chaque nœud enfant et incluez leurs structures OPTITEM dans le tableau OPTITEM, immédiatement après la structure OPTITEM du parent. Dans la structure OPTITEM du parent, pOptType doit avoir la valeur NULL.

Le nœud racine treeview est de niveau 0. Les options affichées lorsqu’un utilisateur développe le nœud racine sont de niveau 1. Le nombre maximal de niveaux est de 256.

Pour les valeurs d’option stockées dans la structure DEVMODE d’une imprimante, le membre DMPubID doit identifier l’option. Pour chaque valeur DMPubID utilisée, une DLL d’interface d’imprimante doit spécifier le type d’option CPSUI répertorié dans le tableau suivant.

Valeur DMPubID Type d’option CPSUI requis
DMPUB_COLOR TVOT_2STATES
DMPUB_COPIES_COLLATE TVOT_UDARROW plus EXTCHKBOX (Voir les commentaires qui suivent ce tableau).)
DMPUB_DEFSOURCE TVOT_LISTBOX
DMPUB_DITHERTYPE TVOT_LISTBOX
DMPUB_DUPLEX TVOT_2STATES ou TVOT_3STATES
DMPUB_FORMNAME TVOT_LISTBOX
DMPUB_ICMINTENT TVOT_2STATES ou TVOT_3STATES
DMPUB_ICMMETHOD TVOT_2STATES ou TVOT_3STATES
DMPUB_MEDIATYPE TVOT_LISTBOX
DMPUB_NUP TVOT_LISTBOX
DMPUB_ORIENTATION TVOT_2STATES ou TVOT_3STATES
DMPUB_OUTPUTBIN TVOT_LISTBOX
DMPUB_PAGEORDER TVOT_2STATES ou TVOT_3STATES
DMPUB_PRINTQUALITY TVOT_LISTBOX
DMPUB_QUALITY TVOT_2STATES ou TVOT_3STATES
DMPUB_SCALE TVOT_UDARROW
DMPUB_TTOPTION TVOT_LISTBOX

Si DMPubID est DMPUB_COPIES_COLLATE et que l’imprimante peut rassembler des copies, une zone de case activée étendue (structure EXTCHKBOX) doit être fournie. Les membres de la structure EXTCHCKBOX doivent être définis comme suit :

pExtCheckbox->cbSize = sizeof(EXTCHKBOX);
pExtCheckbox->pTitle = (PWSTR) IDS_CPSUI_COLLATE;
pExtCheckbox->pCheckedName = (PWSTR) IDS_CPSUI_COLLATED;
pExtCheckbox->IconID = IDI_CPSUI_COLLATE;
pExtCheckbox->Flags = ECBF_CHECKNAME_ONLY_ENABLED;
pExtCheckbox->pSeparator = (PWSTR)IDS_CPSUI_SLASH_SEP;

Si OPTIF_EXT_HIDE n’est pas défini dans Indicateurs, CPSUI active la zone case activée si un utilisateur demande plusieurs copies et la désactive si une seule copie est demandée.

En outre, CPSUI définit le texte d’affichage de l’option à copier pour une copie et les copies pour plusieurs copies.

Si DMPubID est DMPUB_COLOR, sa première structure OPTPARAM (Sel=0) doit représenter l’échelle grise et pData dans la structure OPTPARAM doit être IDS_CPSUI_GRAYSCALE. Sa deuxième structure OPTPARAM (Sel=1) doit représenter Color, et pData dans la structure OPTPARAM doit être IDS_CPSUI_COLOR. Si le DMPubID d’une autre option est DMPUB_ICMINTENT et si Color n’est pas sélectionné, CPSUI désactive l’option pour laquelle DMPUB_ICMINTENT est spécifié.

CPSUI désactive la correspondance des couleurs lorsque la couleur n’est pas sélectionnée.

Configuration requise

Condition requise Valeur
En-tête compstui.h (inclure Compstui.h)