Struttura OPTITEM (compstui.h)

La struttura OPTITEM viene usata dalle applicazioni CPSUI (incluse le DLL dell'interfaccia della stampante) per descrivere un'opzione del foglio delle proprietà in una pagina del foglio delle proprietà, se la pagina è descritta da una struttura COMPROPSHEETUI .

Sintassi

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;

Members

cbSize

Dimensioni, in byte, della struttura OPTITEM .

Level

Specifica il livello di questa opzione nella visualizzazione albero. Per altre informazioni, vedere la sezione Osservazioni di seguito.

DlgPageIdx

Identifica la finestra di dialogo a cui appartiene l'opzione. Specifica un indice di matrice nella matrice DLGPAGE a cui punta il membro pDlgPage della struttura COMPROPSHEETUI .

Se pDlgPage punta a una struttura CPSUI fornita, la struttura DLGPAGE predefinita fornisce questo indice.

Flags

Flag di bit facoltativi che modificano le caratteristiche dell'opzione. Il flag OPTIF_CHANGEONCE è impostato da CPSUI; tutti gli altri flag vengono impostati dal chiamante. È possibile impostare qualsiasi combinazione dei flag seguenti.

OPTIF_CALLBACK

Quando un utente modifica l'opzione, CPSUI deve chiamare la funzione di callback _CPSUICALLBACK tipizzata specificata nella struttura COMPROPSHEETUI .

OPTIF_CHANGED

La funzione di callback tipizzata _CPSUICALLBACK deve impostare questo flag se ha modificato l'opzione, in modo che CPSUI lo ririeseguirà.

OPTIF_CHANGEONCE

CPSUI imposta questo bit se un utente ha modificato l'opzione.

OPTIF_COLLAPSE

Comprimere questa opzione e i relativi elementi figlio in modo che non venga espanso nella visualizzazione albero.

OPTIF_DISABLED

Disabilita l'opzione in modo che non sia modificabile dall'utente.

OPTIF_ECB_CHECKED

La casella di controllo estesa associata si trova nello stato selezionato.

OPTIF_EXT_IS_EXTPUSH

Se impostato, il membro pExtPush è valido (a meno che NULL).

Se non è impostato, il membro pExtChkBox è valido (a meno che NON SIA NULL).

OPTIF_EXT_DISABLED

La casella di controllo estesa o il pulsante push esteso non è selezionabile.

OPTIF_EXT_HIDE

CPSUI non visualizzerà la casella di controllo estesa o il pulsante push esteso.

OPTIF_HAS_POIEXT

Se impostato, il membro pOIExt è valido.

OPTIF_HIDE

CPSUI non visualizzerà questa opzione nella visualizzazione albero. CPSUI esamina questo flag solo quando si crea inizialmente la visualizzazione albero, quindi la modifica del flag dal valore iniziale non ha alcun effetto.

OPTIF_INITIAL_TVITEM

Se impostato, CPSUI imposta lo stato attivo della finestra iniziale su questa opzione quando visualizza la visualizzazione albero. CPSUI espande i nodi dell'albero e scorre l'opzione nella visualizzazione in base alle esigenze. Se l'opzione è nascosta o se questo flag non è impostato per alcuna struttura OPTITEM, CPSUI sceglie lo stato attivo iniziale.

OPTIF_NO_GROUPBOX_NAME

Se non è impostato e pOptype non è zero, CPSUI usa la stringa pName come titolo della casella di gruppo.

Se impostato, CPSUI fornisce un titolo groupbox.

OPTIF_OVERLAY_NO_ICON

Se imposta CPSUI sovrappone l'icona IDI_CPSUI_NO sull'icona associata all'opzione. Vedere il membro Sel/pSel .

OPTIF_OVERLAY_STOP_ICON

Se impostato, CPSUI sovrappone l'icona IDI_CPSUI_STOP sull'icona associata all'opzione. Vedere il membro Sel/pSel .

OPTIF_OVERLAY_WARNING_ICON

Se impostato, CPSUI sovrappone l'icona IDI_CPSUI_WARNING sull'icona associata all'opzione. Vedere il membro Sel/pSel .

OPTIF_SEL_AS_HICON

Se impostato, il membro Sel contiene un handle dell'icona.

Se non è impostato, il membro Sel contiene un identificatore di risorsa icona.

Questo flag può essere usato solo quando pOptType contiene NULL.

UserData

Valore facoltativo a 32 bit che può essere impostato e usato dal chiamante.

Le DLL dell'interfaccia della stampante per Unidrv e Pscript usano questo membro per fornire un puntatore a una struttura USERDATA . I plug-in dell'interfaccia utente possono fare riferimento a questa struttura.

pName

Identificatore di stringa che rappresenta un nome di opzione localizzato e visualizzabile. Questo può essere un puntatore a 32 bit a una stringa con terminazione NULL oppure può essere un identificatore di risorsa stringa a 16 bit, con HIWORD impostato su zero. Vedere anche la descrizione di DMPubID, di seguito.

DUMMYUNIONNAME

DUMMYUNIONNAME.Sel

Questa unione indica il valore del parametro attualmente selezionato dell'opzione. L'utilizzo dipende dal tipo di opzione CPSUI.

Se pOptType è NULL, l'opzione non ha parametri, quindi questa unione identifica un'icona da associare al nodo treeview per l'opzione. L'identificatore dell'icona può essere un handle icona o un identificatore di risorsa icona, come indicato da OPTIF_SEL_AS_HICON in Flag.

DUMMYUNIONNAME.pSel

Questa unione indica il valore del parametro attualmente selezionato dell'opzione. L'utilizzo dipende dal tipo di opzione CPSUI.

Se pOptType è NULL, l'opzione non ha parametri, quindi questa unione identifica un'icona da associare al nodo treeview per l'opzione. L'identificatore dell'icona può essere un handle icona o un identificatore di risorsa icona, come indicato da OPTIF_SEL_AS_HICON in Flag.

DUMMYUNIONNAME2

Definisce l'unione DUMMYUNIONNAME2 .

DUMMYUNIONNAME2.pExtChkBox

Struttura puntatore a EXTCHKBOX

DUMMYUNIONNAME2.pExtPush

Questa unione può essere un puntatore a una struttura EXTCHKBOX , un puntatore a una struttura EXTPUSH o NULL.

Una struttura OPTITEM può facoltativamente avere una struttura EXTCHKBOX, una struttura EXTPUSH o nessuno dei due associati. Se questa unione non è NULL e se OPTIF_EXT_IS_EXTPUSH è impostata in Flag, pExtPush è valida. Se il flag non è impostato, pExtChkBox è valido.

pOptType

Puntatore a una struttura OPTTYPE che descrive il tipo di visualizzazione dell'opzione. Se NULL, l'opzione non ha parametri e viene usata come elemento padre per le opzioni con un valore di livello superiore. Le opzioni figlio devono seguire immediatamente l'elemento padre nella matrice OPTITEM. Vedere la sezione Osservazioni seguenti.

HelpIndex

Indice file della Guida, che identifica il testo della Guida da associare all'opzione . Se zero, il testo del file della Guida non esiste per questa opzione. Si noti che il membro pOIExt di questa struttura deve essere impostato con l'indirizzo di una struttura OIEXT per consentire l'esistenza della funzionalità del testo della Guida.

DMPubID

Questo membro è destinato all'uso dalle DLL dell'interfaccia della stampante, quando si crea una finestra delle proprietà Proprietà documento (vedere DrvDocumentPropertySheets). Si tratta di un valore costante che specifica quale, se presente, membro pubblico della struttura DEVMODEW è associato a questa opzione. Nella tabella seguente sono elencate costanti disponibili, il membro della struttura DEVMODE associato e il valore necessario per pName per ogni costante.

Constant Value Valore pName obbligatorio Membro struttura
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 Non contenuto nella sezione pubblica di DEVMODE. IDS_CPSUI_NUP
DMPUB_ORIENTATION dmOrientation IDS_CPSUI_ORIENTATION
DMPUB_OUTPUTBIN Non contenuto nella sezione pubblica di DEVMODE. IDS_CPSUI_OUTPUTBIN
DMPUB_PAGEORDER Non contenuto nella sezione pubblica di DEVMODE. IDS_CPSUI_PAGEORDER
DMPUB_PRINTQUALITY dmPrintQuality IDS_CPSUI_PRINTQUALITY o IDS_CPSUI_RESOLUTION. Se non specificato, il nome predefinito è IDS_CPSUI_RESOLUTION.
DMPUB_QUALITY Non contenuto nella sezione pubblica di DEVMODE. IDS_CPSUI_QUALITY_SETTINGS
DMPUB_SCALE dmScale IDS_CPSUI_SCALE
DMPUB_TTOPTION dmTTOption IDS_CPSUI_TTOPTION
DMPUB_NONE Non contenuto nella sezione pubblica di DEVMODE.
Maggiore o uguale a DMPUB_USER Ignorato da CPSUI, può essere un valore definito dal chiamante.

CPSUI non gestisce una struttura DEVMODE. L'applicazione è responsabile della copia dei parametri di opzione selezionati dall'utente in una struttura DEVMODE . CPSUI usa il contenuto DMPubID per determinare la posizione ad albero delle opzioni standard e per determinare il contenuto delle schede Layout e Paper/Quality (vedere il membro pDlgPage della struttura COMPROPSHEETUI ).

Per altre informazioni sull'uso del membro DMPubID , vedere la sezione Osservazioni seguenti.

UserItemID

Valore facoltativo fornito dall'applicazione che può essere usato per scopi di identificazione delle opzioni. Non fatto riferimento a CPSUI.

wReserved

Riservato, deve essere inizializzato su zero.

pOIExt

Puntatore a una struttura OIEXT facoltativa. Il chiamante è responsabile dell'allocazione dell'archiviazione per questa struttura.

dwReserved[3]

Riservato, deve essere inizializzato su zero.

Commenti

Le strutture OPTITEM devono essere posizionate in una matrice e l'indirizzo della matrice deve essere inserito nel membro pOptItem di una struttura COMPROPSHEETUI .

Il membro Level consente di creare nodi figlio nella visualizzazione albero. Ad esempio, per creare un set di nodi di opzione sotto un nodo padre di livello 1, specificare il livello 2 per ogni nodo figlio e includere le strutture OPTITEM nella matrice OPTITEM, immediatamente dopo la struttura OPTITEM dell'elemento padre. Nella struttura OPTITEM padre, pOptType deve essere NULL.

Il nodo radice di treeview è il livello 0. Le opzioni visualizzate quando un utente espande il nodo radice sono di livello 1. Il numero massimo di livelli è 256.

Per i valori di opzione archiviati nella struttura DEVMODE di una stampante, il membro DMPubID deve identificare l'opzione. Per ogni valore DMPubID usato, una DLL dell'interfaccia della stampante deve specificare il tipo di opzione CPSUI elencato nella tabella seguente.

Valore DMPubID Tipo di opzione CPSUI obbligatorio
DMPUB_COLOR TVOT_2STATES
DMPUB_COPIES_COLLATE TVOT_UDARROW più EXTCHKBOX (Vedere i commenti che seguono questa tabella).
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

Se DMPubID è DMPUB_COPIES_COLLATE e la stampante può collare copie, è necessario specificare una casella di controllo estesa (struttura EXTCHKBOX ). I membri della struttura EXTCHCKBOX devono essere impostati come segue:

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 non è impostato in Flag, CPSUI abilita la casella di controllo se un utente richiede più di una copia e lo disabilita se viene richiesta una sola copia.

Inoltre, CPSUI imposta il testo visualizzato dell'opzione da copiare per una copia e copia per più di una copia.

Se DMPubID è DMPUB_COLOR, la prima struttura OPTPARAM (Sel=0) deve rappresentare La scala grigia e pData nella struttura OPTPARAM deve essere IDS_CPSUI_GRAYSCALE. La seconda struttura OPTPARAM (Sel=1) deve rappresentare Color e pData nella struttura OPTPARAM deve essere IDS_CPSUI_COLOR. Se DMPubID di un'altra opzione è DMPUB_ICMINTENT e se Color non è selezionato, CPSUI disabilita l'opzione per cui viene specificato DMPUB_ICMINTENT.

CPSUI disabilita la corrispondenza dei colori quando l'opzione Color non è selezionata.

Requisiti

Requisito Valore
Intestazione compstui.h (include Compstui.h)