Estrutura OPTITEM (compstui.h)
A estrutura OPTITEM é usada por aplicativos CPSUI (incluindo DLLs de interface da impressora) para descrever uma opção de folha de propriedades em uma página de folha de propriedades, se a página for descrita por uma estrutura COMPROPSHEETUI .
Sintaxe
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;
Membros
cbSize
Tamanho, em bytes, da estrutura OPTITEM .
Level
Especifica o nível dessa opção na visão de árvore. Para obter mais informações, consulte a seção Comentários abaixo.
DlgPageIdx
Identifica a caixa de diálogo à qual a opção pertence. Especifica um índice de matriz na matriz DLGPAGE apontada pelo membro pDlgPage da estrutura COMPROPSHEETUI .
Se pDlgPage apontar para uma estrutura DLGPAGE fornecida por CPSUI, a CPSUI fornecerá esse índice.
Flags
Sinalizadores de bit opcionais que modificam as características da opção. O sinalizador OPTIF_CHANGEONCE é definido pelo CPSUI; todos os outros sinalizadores são definidos pelo chamador. Qualquer combinação dos sinalizadores a seguir pode ser definida.
OPTIF_CALLBACK
Quando um usuário modifica a opção , o CPSUI deve chamar a função de retorno de chamada do tipo _CPSUICALLBACK especificada na estrutura COMPROPSHEETUI .
OPTIF_CHANGED
A função de retorno de chamada do tipo _CPSUICALLBACK deve definir esse sinalizador se ele modificou a opção, de modo que o CPSUI o reproduz.
OPTIF_CHANGEONCE
CPSUI define esse bit se um usuário modificou a opção.
OPTIF_COLLAPSE
Recolher essa opção e seus filhos para que ela não seja expandida na visão de árvore.
OPTIF_DISABLED
Desabilita a opção para que ela não seja modificável pelo usuário.
OPTIF_ECB_CHECKED
A caixa de marcar estendida associada está no estado marcado.
OPTIF_EXT_IS_EXTPUSH
Se definido, o membro pExtPush será válido (a menos que NULL).
Se não estiver definido, o membro pExtChkBox será válido (a menos que NULL).
OPTIF_EXT_DISABLED
A caixa de marcar estendida ou o botão de push estendido não é selecionável.
OPTIF_EXT_HIDE
O CPSUI não exibirá a caixa de marcar estendida nem o botão de push estendido.
OPTIF_HAS_POIEXT
Se definido, o membro pOIExt será válido.
OPTIF_HIDE
O CPSUI não exibirá essa opção na visão de árvore. O CPSUI examina esse sinalizador somente ao criar inicialmente a visão de árvore, portanto, alterar o sinalizador de seu valor inicial não tem efeito.
OPTIF_INITIAL_TVITEM
Se definido, CPSUI define o foco da janela inicial para essa opção quando exibe a visão de árvore. O CPSUI expande os nós de árvore e rola a opção para a exibição conforme necessário. Se a opção estiver oculta ou se esse sinalizador não estiver definido para nenhuma estrutura OPTITEM, CPSUI escolherá o foco inicial.
OPTIF_NO_GROUPBOX_NAME
Se não estiver definido e pOptype não for zero, CPSUI usará a cadeia de caracteres pName como o título da caixa de grupo.
Se definido, CPSUI fornecerá um título de caixa de grupo.
OPTIF_OVERLAY_NO_ICON
Se definir CPSUI sobrepõe seu ícone de IDI_CPSUI_NO no ícone associado à opção . (Consulte o membro Sel/pSel .)
OPTIF_OVERLAY_STOP_ICON
Se definido, o CPSUI sobrepõe seu ícone de IDI_CPSUI_STOP no ícone associado à opção . (Consulte o membro Sel/pSel .)
OPTIF_OVERLAY_WARNING_ICON
Se definido, o CPSUI sobrepõe seu ícone de IDI_CPSUI_WARNING no ícone associado à opção . (Consulte o membro Sel/pSel .)
OPTIF_SEL_AS_HICON
Se definido, o membro Sel contém um identificador de ícone.
Se não estiver definido, o membro Sel conterá um identificador de recurso de ícone.
Esse sinalizador só pode ser usado quando pOptType contém NULL.
UserData
Valor opcional de 32 bits que pode ser definido e usado pelo chamador.
(As DLLs da interface da impressora para Unidrv e Pscript usam esse membro para fornecer um ponteiro para uma estrutura USERDATA . Os plug-ins da interface do usuário podem referenciar essa estrutura.)
pName
Identificador de cadeia de caracteres que representa um nome de opção localizado e exibivel. Isso pode ser um ponteiro de 32 bits para uma cadeia de caracteres terminada em NULL ou pode ser um identificador de recurso de cadeia de caracteres de 16 bits, com HIWORD definido como zero. (Consulte também a descrição de DMPubID, abaixo.)
DUMMYUNIONNAME
DUMMYUNIONNAME.Sel
Essa união indica o valor do parâmetro selecionado no momento da opção. Seu uso depende do tipo de opção CPSUI.
Se pOptType for NULL, a opção não terá parâmetros, portanto, essa união identificará um ícone a ser associado ao nó treeview para a opção . O identificador de ícone pode ser um identificador de ícone ou um identificador de recurso de ícone, conforme indicado por OPTIF_SEL_AS_HICON em Sinalizadores.
DUMMYUNIONNAME.pSel
Essa união indica o valor do parâmetro selecionado no momento da opção. Seu uso depende do tipo de opção CPSUI.
Se pOptType for NULL, a opção não terá parâmetros, portanto, essa união identificará um ícone a ser associado ao nó treeview para a opção . O identificador de ícone pode ser um identificador de ícone ou um identificador de recurso de ícone, conforme indicado por OPTIF_SEL_AS_HICON em Sinalizadores.
DUMMYUNIONNAME2
Define a união DUMMYUNIONNAME2 .
DUMMYUNIONNAME2.pExtChkBox
Ponteiro para a estrutura EXTCHKBOX
DUMMYUNIONNAME2.pExtPush
Essa união pode ser um ponteiro para uma estrutura EXTCHKBOX , um ponteiro para uma estrutura EXTPUSH ou NULL.
Opcionalmente, uma estrutura OPTITEM pode ter uma estrutura EXTCHKBOX, uma estrutura EXTPUSH ou nenhuma delas associada a ela. Se essa união não for NULL e se OPTIF_EXT_IS_EXTPUSH estiver definido em Sinalizadores, pExtPush será válido. Se o sinalizador não estiver definido, pExtChkBox será válido.
pOptType
Ponteiro para uma estrutura OPTTYPE que descreve o tipo de exibição da opção. Se NULL, a opção não tem parâmetros e é usada como pai para opções com um valor de Nível mais alto. As opções filho devem seguir imediatamente o pai na matriz OPTITEM. (Consulte a seção Comentários a seguir.)
HelpIndex
Índice de arquivo de ajuda, que identifica o texto de ajuda a ser associado à opção . Se zero, o texto do arquivo de ajuda não existe para essa opção. Observe que o membro pOIExt dessa estrutura deve ser definido com o endereço de uma estrutura OIEXT para que a funcionalidade de texto de ajuda exista.
DMPubID
Esse membro destina-se ao uso por DLLs de interface da impressora ao criar uma folha de propriedades propriedades do documento (consulte DrvDocumentPropertySheets). É um valor constante que especifica qual, se houver, membro público da estrutura DEVMODEW está associado a essa opção. A tabela a seguir lista as constantes disponíveis, o membro da estrutura DEVMODE associado e o valor necessário para pName para cada constante.
Valor Constante | Valor de pName necessário | Membro da estrutura |
---|---|---|
DMPUB_COLOR | dmColor | IDS_CPSUI_COLOR_APPERANCE |
DMPUB_COPIES_COLLATE | dmCopies e 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 | Não contido na seção pública de DEVMODE. | IDS_CPSUI_NUP |
DMPUB_ORIENTATION | dmOrientation | IDS_CPSUI_ORIENTATION |
DMPUB_OUTPUTBIN | Não contido na seção pública de DEVMODE. | IDS_CPSUI_OUTPUTBIN |
DMPUB_PAGEORDER | Não contido na seção pública de DEVMODE. | IDS_CPSUI_PAGEORDER |
DMPUB_PRINTQUALITY | dmPrintQuality | IDS_CPSUI_PRINTQUALITY ou IDS_CPSUI_RESOLUTION. Se não for especificado, o nome padrão será IDS_CPSUI_RESOLUTION. |
DMPUB_QUALITY | Não contido na seção pública de DEVMODE. | IDS_CPSUI_QUALITY_SETTINGS |
DMPUB_SCALE | dmScale | IDS_CPSUI_SCALE |
DMPUB_TTOPTION | dmTTOption | IDS_CPSUI_TTOPTION |
DMPUB_NONE | Não contido na seção pública de DEVMODE. | |
Maior ou igual a DMPUB_USER | Ignorado pelo CPSUI, pode ser um valor definido pelo chamador. |
O CPSUI não mantém uma estrutura DEVMODE. O aplicativo é responsável por copiar parâmetros de opção selecionados pelo usuário em uma estrutura DEVMODE . O CPSUI usa conteúdo DMPubID para determinar o posicionamento de visão de árvore das opções padrão e determinar o conteúdo das guias Layout e Papel/Qualidade (consulte o membro pDlgPage da estrutura COMPROPSHEETUI ).
Para obter informações adicionais sobre como usar o membro DMPubID , consulte a seção Comentários a seguir.
UserItemID
Valor opcional fornecido pelo aplicativo que pode ser usado para fins de identificação de opção. Não referenciado pelo CPSUI.
wReserved
Reservado, deve ser inicializado como zero.
pOIExt
Ponteiro para uma estrutura OIEXT opcional. O chamador é responsável por alocar armazenamento para essa estrutura.
dwReserved[3]
Reservado, deve ser inicializado como zero.
Comentários
As estruturas OPTITEM devem ser colocadas em uma matriz e o endereço da matriz deve ser colocado no membro pOptItem de uma estrutura COMPROPSHEETUI .
O membro Level permite que você crie nós filho na visão de árvore. Por exemplo, para criar um conjunto de nós de opção em um nó pai de nível 1, especifique o nível 2 para cada nó filho e inclua suas estruturas OPTITEM na matriz OPTITEM, imediatamente após a estrutura OPTITEM do pai. Na estrutura OPTITEM do pai, pOptType deve ser NULL.
O nó raiz treeview é o nível 0. As opções exibidas quando um usuário expande o nó raiz são de nível 1. O número máximo de níveis é 256.
Para valores de opção armazenados na estrutura DEVMODE de uma impressora, o membro DMPubID deve identificar a opção. Para cada valor DMPubID usado, uma DLL de interface de impressora deve especificar o tipo de opção CPSUI listado na tabela a seguir.
Valor DMPubID | Tipo de opção CPSUI necessário |
---|---|
DMPUB_COLOR | TVOT_2STATES |
DMPUB_COPIES_COLLATE | TVOT_UDARROW mais EXTCHKBOX (consulte comentários seguindo esta tabela.) |
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 |
Se DMPubID for DMPUB_COPIES_COLLATE e a impressora puder agrupar cópias, uma caixa de marcar estendida (estrutura EXTCHKBOX) deverá ser fornecida. Os membros da estrutura EXTCHCKBOX devem ser definidos da seguinte maneira:
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;
Se OPTIF_EXT_HIDE não estiver definido em Sinalizadores, o CPSUI habilitará a caixa marcar se um usuário solicitar mais de uma cópia e a desabilitará se apenas uma cópia for solicitada.
Além disso, o CPSUI define o texto de exibição da opção a ser copiado para uma cópia e cópias para mais de uma cópia.
Se DMPubID for DMPUB_COLOR, sua primeira estrutura OPTPARAM (Sel=0) deverá representar Escala de Cinza e pData na estrutura OPTPARAM deverá ser IDS_CPSUI_GRAYSCALE. Sua segunda estrutura OPTPARAM (Sel=1) deve representar Cor e pData na estrutura OPTPARAM deve ser IDS_CPSUI_COLOR. Se o DMPubID de outra opção for DMPUB_ICMINTENT e se Color não estiver selecionado, CPSUI desabilitará a opção para a qual DMPUB_ICMINTENT é especificado.
CPSUI desabilita a correspondência de cores quando Cor não está selecionada.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | compstui.h (inclua Compstui.h) |