Estructura OPTITEM (compstui.h)

Las aplicaciones CPSUI usan la estructura OPTITEM (incluidos los archivos DLL de interfaz de impresora) para describir una opción de hoja de propiedades en una página de hoja de propiedades, si la página se describe mediante una estructura COMPROPSHEETUI .

Sintaxis

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;

Miembros

cbSize

Tamaño, en bytes, de la estructura OPTITEM .

Level

Especifica el nivel de esta opción en la vista de árbol. Para obtener más información, vea la sección Comentarios a continuación.

DlgPageIdx

Identifica el cuadro de diálogo al que pertenece la opción. Especifica un índice de matriz en la matriz DLGPAGE a la que apunta el miembro pDlgPage de la estructura COMPROPSHEETUI .

Si pDlgPage apunta a una estructura DLGPAGE predefinida proporcionada por CPSUI, CPSUI proporciona este índice.

Flags

Marcas de bits opcionales que modifican las características de la opción. CpSUI establece la marca OPTIF_CHANGEONCE; el autor de la llamada establece todas las demás marcas. Se puede establecer cualquier combinación de las marcas siguientes.

OPTIF_CALLBACK

Cuando un usuario modifica la opción, CPSUI debe llamar a la función de devolución de llamada con tipo _CPSUICALLBACK especificada en la estructura COMPROPSHEETUI .

OPTIF_CHANGED

La función de devolución de llamada con tipo _CPSUICALLBACK debe establecer esta marca si modificó la opción para que CPSUI vuelva a reproducirla.

OPTIF_CHANGEONCE

CPSUI establece este bit si un usuario modificó la opción.

OPTIF_COLLAPSE

Contraiga esta opción y sus elementos secundarios para que no se expanda en la vista de árbol.

OPTIF_DISABLED

Deshabilita la opción para que no sea modificable por el usuario.

OPTIF_ECB_CHECKED

La casilla extendida asociada está en estado activado.

OPTIF_EXT_IS_EXTPUSH

Si se establece, el miembro pExtPush es válido (a menos que sea NULL).

Si no se establece, el miembro pExtChkBox es válido (a menos que sea NULL).

OPTIF_EXT_DISABLED

La casilla extendida o el botón de inserción extendido no se pueden seleccionar.

OPTIF_EXT_HIDE

CPSUI no mostrará la casilla extendida ni el botón de inserción extendido.

OPTIF_HAS_POIEXT

Si se establece, el miembro pOIExt es válido.

OPTIF_HIDE

CPSUI no mostrará esta opción en la vista de árbol. CPSUI examina esta marca solo al crear inicialmente la vista de árbol, por lo que cambiar la marca de su valor inicial no tiene ningún efecto.

OPTIF_INITIAL_TVITEM

Si se establece, CPSUI establece el foco inicial de la ventana en esta opción cuando muestra la vista de árbol. CPSUI expande los nodos de árbol y desplaza la opción en vista según sea necesario. Si la opción está oculta o si esta marca no está establecida para ninguna estructura OPTITEM, CPSUI elige el foco inicial.

OPTIF_NO_GROUPBOX_NAME

Si no se establece y pOptype no es cero, CPSUI usa la cadena pName como título del cuadro de grupo.

Si se establece, CPSUI proporciona un título de cuadro de grupo.

OPTIF_OVERLAY_NO_ICON

Si establece CPSUI superpone su icono de IDI_CPSUI_NO en el icono asociado a la opción . (Consulte el miembro Sel/pSel ).

OPTIF_OVERLAY_STOP_ICON

Si se establece, CPSUI superpone su icono de IDI_CPSUI_STOP en el icono asociado a la opción . (Consulte el miembro Sel/pSel ).

OPTIF_OVERLAY_WARNING_ICON

Si se establece, CPSUI superpone su icono de IDI_CPSUI_WARNING en el icono asociado a la opción . (Consulte el miembro Sel/pSel ).

OPTIF_SEL_AS_HICON

Si se establece, el miembro Sel contiene un identificador de icono.

Si no se establece, el miembro Sel contiene un identificador de recurso de icono.

Esta marca solo se puede usar cuando pOptType contiene NULL.

UserData

Valor opcional de 32 bits que el autor de la llamada puede establecer y usar.

(Los archivos DLL de la interfaz de impresora para Unidrv y Pscript usan este miembro para proporcionar un puntero a una estructura USERDATA . Los complementos de interfaz de usuario pueden hacer referencia a esta estructura).

pName

Identificador de cadena que representa un nombre de opción localizado y que se puede mostrar. Puede ser un puntero de 32 bits a una cadena terminada en NULL o puede ser un identificador de recurso de cadena de 16 bits, con HIWORD establecido en cero. (Consulte también la descripción de DMPubID, a continuación).

DUMMYUNIONNAME

DUMMYUNIONNAME.Sel

Esta unión indica el valor de parámetro seleccionado actualmente de la opción. Su uso depende del tipo de opción CPSUI.

Si pOptType es NULL, la opción no tiene parámetros, por lo que esta unión identifica un icono que se va a asociar al nodo treeview de la opción. El identificador de icono puede ser un identificador de icono o un identificador de recursos de icono, como se indica OPTIF_SEL_AS_HICON en Marcas.

DUMMYUNIONNAME.pSel

Esta unión indica el valor de parámetro seleccionado actualmente de la opción. Su uso depende del tipo de opción CPSUI.

Si pOptType es NULL, la opción no tiene parámetros, por lo que esta unión identifica un icono que se va a asociar al nodo treeview de la opción. El identificador de icono puede ser un identificador de icono o un identificador de recursos de icono, como se indica OPTIF_SEL_AS_HICON en Marcas.

DUMMYUNIONNAME2

Define la unión DUMMYUNIONNAME2 .

DUMMYUNIONNAME2.pExtChkBox

Puntero a la estructura EXTCHKBOX

DUMMYUNIONNAME2.pExtPush

Esta unión puede ser un puntero a una estructura EXTCHKBOX , un puntero a una estructura EXTPUSH o NULL.

Una estructura OPTITEM puede tener opcionalmente una estructura EXTCHKBOX, una estructura EXTPUSH o ninguna, asociada a ella. Si esta unión no es NULL y si OPTIF_EXT_IS_EXTPUSH se establece en Marcas, pExtPush es válido. Si no se establece la marca, pExtChkBox es válido.

pOptType

Puntero a una estructura OPTTYPE que describe el tipo de presentación de la opción. Si es NULL, la opción no tiene parámetros y se usa como elemento primario para las opciones con un valor level superior. Las opciones secundarias deben seguir inmediatamente al elemento primario de la matriz OPTITEM. (Vea la siguiente sección Comentarios).

HelpIndex

Índice del archivo de ayuda, que identifica el texto de ayuda que se va a asociar a la opción . Si es cero, el texto del archivo de ayuda no existe para esta opción. Tenga en cuenta que el miembro pOIExt de esta estructura debe establecerse con la dirección de una estructura OIEXT para que exista la funcionalidad de texto de ayuda.

DMPubID

Este miembro está diseñado para que lo usen los archivos DLL de la interfaz de impresora, al crear una hoja de propiedades De documento (consulte DrvDocumentPropertySheets). Es un valor constante que especifica qué miembro público, si existe, de la estructura DEVMODEW está asociado a esta opción. En la tabla siguiente se enumeran las constantes disponibles, el miembro de estructura DEVMODE asociado y el valor necesario para pName para cada constante.

Valor constante Valor pName requerido Miembro de estructura
DMPUB_COLOR dmColor IDS_CPSUI_COLOR_APPERANCE
DMPUB_COPIES_COLLATE dmCopies y 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 No se incluye en la sección pública de DEVMODE. IDS_CPSUI_NUP
DMPUB_ORIENTATION dmOrientation IDS_CPSUI_ORIENTATION
DMPUB_OUTPUTBIN No se incluye en la sección pública de DEVMODE. IDS_CPSUI_OUTPUTBIN
DMPUB_PAGEORDER No se incluye en la sección pública de DEVMODE. IDS_CPSUI_PAGEORDER
DMPUB_PRINTQUALITY dmPrintQuality IDS_CPSUI_PRINTQUALITY o IDS_CPSUI_RESOLUTION. Si no se especifica, el nombre predeterminado es IDS_CPSUI_RESOLUTION.
DMPUB_QUALITY No se incluye en la sección pública de DEVMODE. IDS_CPSUI_QUALITY_SETTINGS
DMPUB_SCALE dmScale IDS_CPSUI_SCALE
DMPUB_TTOPTION dmTTOption IDS_CPSUI_TTOPTION
DMPUB_NONE No se incluye en la sección pública de DEVMODE.
Mayor o igual que DMPUB_USER Omitido por CPSUI, puede ser un valor definido por el autor de la llamada.

CPSUI no mantiene una estructura DEVMODE. La aplicación es responsable de copiar parámetros de opción seleccionados por el usuario en una estructura DEVMODE . CPSUI usa el contenido DMPubID para determinar la ubicación de la vista de árbol de las opciones estándar y para determinar el contenido de las pestañas Diseño y Papel/Calidad (vea el miembro pDlgPage de la estructura COMPROPSHEETUI ).

Para obtener más información sobre el uso del miembro DMPubID , vea la sección Comentarios siguiente.

UserItemID

Valor opcional proporcionado por la aplicación que se puede usar con fines de identificación de opciones. No hace referencia a CPSUI.

wReserved

Reservado, debe inicializarse en cero.

pOIExt

Puntero a una estructura OIEXT opcional. El autor de la llamada es responsable de asignar almacenamiento para esta estructura.

dwReserved[3]

Reservado, debe inicializarse en cero.

Comentarios

Las estructuras OPTITEM deben colocarse en una matriz y la dirección de la matriz debe colocarse en el miembro pOptItem de una estructura COMPROPSHEETUI .

El miembro Level permite crear nodos secundarios en la vista de árbol. Por ejemplo, para crear un conjunto de nodos de opción en un nodo primario de nivel 1, especifique el nivel 2 para cada nodo secundario e incluya sus estructuras OPTITEM en la matriz OPTITEM, inmediatamente después de la estructura OPTITEM del elemento primario. En la estructura OPTITEM del elemento primario, pOptType debe ser NULL.

El nodo raíz de la vista de árbol es el nivel 0. Las opciones que se muestran cuando un usuario expande el nodo raíz son de nivel 1. El número máximo de niveles es 256.

Para los valores de opción almacenados en la estructura DEVMODE de una impresora, el miembro DMPubID debe identificar la opción. Para cada valor DMPubID que se usa, un archivo DLL de interfaz de impresora debe especificar el tipo de opción CPSUI que se muestra en la tabla siguiente.

Valor DMPubID Tipo de opción CPSUI requerido
DMPUB_COLOR TVOT_2STATES
DMPUB_COPIES_COLLATE TVOT_UDARROW más EXTCHKBOX (vea los comentarios que siguen a esta tabla).
DMPUB_DEFSOURCE TVOT_LISTBOX
DMPUB_DITHERTYPE TVOT_LISTBOX
DMPUB_DUPLEX TVOT_2STATES o TVOT_3STATES
DMPUB_FORMNAME TVOT_LISTBOX
DMPUB_ICMINTENT TVOT_2STATES o TVOT_3STATES
DMPUB_ICMMETHOD TVOT_2STATES o TVOT_3STATES
DMPUB_MEDIATYPE TVOT_LISTBOX
DMPUB_NUP TVOT_LISTBOX
DMPUB_ORIENTATION TVOT_2STATES o TVOT_3STATES
DMPUB_OUTPUTBIN TVOT_LISTBOX
DMPUB_PAGEORDER TVOT_2STATES o TVOT_3STATES
DMPUB_PRINTQUALITY TVOT_LISTBOX
DMPUB_QUALITY TVOT_2STATES o TVOT_3STATES
DMPUB_SCALE TVOT_UDARROW
DMPUB_TTOPTION TVOT_LISTBOX

Si DMPubID es DMPUB_COPIES_COLLATE y la impresora puede intercalar copias, debe proporcionarse una casilla extendida (estructura EXTCHKBOX ). Los miembros de la estructura EXTCHCKBOX deben establecerse de la siguiente manera:

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 no está establecido en Marcas, CPSUI habilita la casilla si un usuario solicita más de una copia y la deshabilita si solo se solicita una copia.

Además, CPSUI establece el texto para mostrar de la opción para copiar para una copia y copias para más de una copia.

Si DMPubID es DMPUB_COLOR, su primera estructura OPTPARAM (Sel=0) debe representar gray Scale y pData en la estructura OPTPARAM debe ser IDS_CPSUI_GRAYSCALE. Su segunda estructura OPTPARAM (Sel=1) debe representar Color y pData en la estructura OPTPARAM debe ser IDS_CPSUI_COLOR. Si se DMPUB_ICMINTENT dmPubID de otra opción y, si no está seleccionado Color, CPSUI deshabilita la opción para la que se especifica DMPUB_ICMINTENT.

CPSUI deshabilita la coincidencia de colores cuando no se selecciona Color.

Requisitos

Requisito Valor
Header compstui.h (incluir Compstui.h)