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) |