Funzionalità casella combinata
Questo documento illustra le caratteristiche della casella combinata. Per altre informazioni, vedere gli argomenti seguenti:
-
funzionalità speciali
- elenchi di directory
- dati associati a elementi elenco
- 'interfaccia utente estesa
- Cue Banners
- notifiche casella combinata
- comportamento predefinito della casella combinata
Funzionalità speciali
Esistono funzioni e messaggi speciali che consentono a un'applicazione di visualizzare un elenco di directory in una casella combinata, associare i dati agli elementi di elenco in una casella combinata e modificare l'interfaccia della tastiera per una casella combinata o una casella di riepilogo a discesa.
- elenchi di directory
- dati associati a elementi elenco
- 'interfaccia utente estesa
- Cue Banners
Elenchi di directory
Un'applicazione può aggiungere i nomi dei file o delle sottodirectory a una casella combinata inviando il messaggio CB_DIR. Il parametro wParam per questo messaggio specifica gli attributi dei file da aggiungere e il parametro lParam è un puntatore alla stringa di testo che definisce la specifica del file.
È possibile utilizzare la funzioneDlgDirListComboBoxper sostituire il contenuto di una casella combinata in una finestra di dialogo. La funzione riempie la casella combinata con i nomi di unità, directory e file che corrispondono a un set specificato di criteri. La funzione DlgDirSelectComboBoxEx recupera la selezione corrente in una casella combinata inizializzata da DlgDirListComboBox. Queste funzioni consentono all'utente di selezionare un'unità, una directory o un file da una casella combinata senza digitare il percorso e il nome del file.
Le funzioni DlgDirListComboBox e DlgDirSelectComboBoxEx e il messaggio di CB_DIR sono simili alle funzioni di DlgDirList e DlgDirSelectEx e al messaggio LB_DIR usato con le caselle di riepilogo.
Dati associati agli elementi elenco
Un'applicazione può associare i dati alle voci di elenco in una casella combinata. Il messaggio CB_SETITEMDATA associa un valore DWORD a una voce di elenco e il CB_GETITEMDATA recupera il valore associato a una voce di elenco.
Nell'esempio riportato in Creazione di una casella combinata disegnata dal proprietario vengono utilizzati i dati degli elementi per associare una costante a ogni elemento in una casella di riepilogo a discesa. Un valore univoco di questo tipo identifica ogni elemento indipendente dalla posizione ordinata.
Altre applicazioni possono usare i dati degli elementi per associare un handle o un puntatore a una voce di elenco. In tal caso, un'applicazione può elaborare un messaggio di WM_DELETEITEM per eliminare o liberare l'oggetto specificato quando l'elemento di elenco viene eliminato.
Interfaccia utente estesa
Le caselle combinate a discesa e le caselle di riepilogo a discesa supportano un'interfaccia di tastiera alternativa denominata 'interfaccia utente estesa. Per impostazione predefinita, il tasto F4 apre o chiude l'elenco e la freccia GIÙ modifica la selezione corrente. In una casella combinata con l'interfaccia utente estesa, tuttavia, il tasto F4 è disabilitato e premendo FRECCIA GIÙ si apre l'elenco a discesa. Inoltre, la rotellina del mouse, che in genere scorre gli elementi nell'elenco, non ha alcuna funzione quando è impostata l'interfaccia utente estesa.
Per selezionare l'interfaccia utente per una casella combinata, un'applicazione può inviare il messaggio CB_SETEXTENDEDUI alla casella combinata. Un valore di TRUE per il parametro wParam abilita l'interfaccia utente estesa; un valore FALSE imposta l'interfaccia utente predefinita. Per determinare se una casella combinata usa l'interfaccia utente estesa, un'applicazione può inviare il messaggio CB_GETEXTENDEDUI alla casella combinata.
Banner cue
I banner cue sono una nuova funzionalità dei controlli di modifica e delle caselle combinate. Lo scopo di un banner di segnale è fornire un suggerimento all'utente allo scopo di un controllo di modifica o di una casella combinata. La schermata seguente mostra un controllo di modifica con il testo "Search".
Il testo di un banner di segnale viene visualizzato quando un controllo di modifica non dispone di testo o di una casella combinata non dispone di alcuna selezione. Quando l'utente immette testo nel controllo di modifica o effettua una selezione in una casella combinata, il banner segnale scompare. Per impostazione predefinita, il banner segnale scompare anche quando il controllo di modifica o la casella combinata riceve lo stato attivo.
Notifiche casella combinata
I messaggi provenienti da caselle combinate vengono inviati come codici di notifica sotto forma di messaggi di WM_COMMAND. Il codice di notifica viene archiviato nella parola alta del parametro wParam e un'applicazione può elaborare i codici di notifica casella combinata seguenti.
Codice di notifica | Descrizione |
---|---|
CBN_CLOSEUP | Indica che l'elenco in una casella combinata o in una casella di riepilogo a discesa sta per chiudersi. |
CBN_DBLCLK | Indica che l'utente ha fatto doppio clic su una voce di elenco in una casella combinata semplice. |
CBN_DROPDOWN | Indica che l'elenco in una casella combinata o in una casella di riepilogo a discesa sta per essere aperto. |
CBN_EDITCHANGE | Indica che l'utente ha modificato il testo nel controllo di modifica di una casella combinata semplice o a discesa. Questo codice di notifica viene inviato dopo viene visualizzato il testo modificato. |
CBN_EDITUPDATE | Indica che l'utente ha modificato il testo nel controllo di modifica di una casella combinata semplice o a discesa. Questo codice di notifica viene inviato prima di venga visualizzato il testo modificato. |
CBN_ERRSPACE | Indica che la casella combinata non può allocare memoria sufficiente per eseguire una richiesta, ad esempio l'aggiunta di una voce di elenco. |
CBN_KILLFOCUS | Indica che la casella combinata sta per perdere lo stato attivo dell'input. |
CBN_SELCHANGE | Indica che la selezione corrente è stata modificata. |
CBN_SELENDCANCEL | Indica che la selezione effettuata nell'elenco a discesa, mentre è stata eliminata, deve essere ignorata. |
CBN_SELENDOK | Indica che l'elenco a discesa selezionato, mentre è stato eliminato, deve essere accettato. |
CBN_SETFOCUS | Indica che la casella combinata ha ricevuto lo stato attivo per l'input. |
Comportamento predefinito della casella combinata
Questa tabella seguente descrive i messaggi gestiti in modo specifico dalla routine della finestra della classe COMBOBOX predefinita.
Messaggio | Descrizione |
---|---|
CB_ADDSTRING | Invia un messaggio di LB_ADDSTRING alla finestra dell'elenco per aggiungere una voce di elenco. |
CB_DELETESTRING | Invia un messaggio di LB_DELETESTRING alla finestra dell'elenco per eliminare una voce di elenco. |
CB_DIR | Aggiunge i nomi di file corrispondenti agli attributi e al percorso specificati all'elenco. |
CB_FINDSTRING | Invia un messaggio LB_FINDSTRING alla finestra elenco. Questo messaggio restituisce l'indice del primo elemento dell'elenco che inizia con il testo specificato. |
CB_FINDSTRINGEXACT | Invia un messaggio LB_FINDSTRING alla finestra elenco. Questo messaggio restituisce l'indice della prima voce di elenco che corrisponde esattamente al testo specificato. |
CB_GETCOUNT | Invia un messaggio di LB_GETCOUNT alla finestra elenco. Restituisce il numero di elementi dell'elenco. |
CB_GETCURSEL | Invia un messaggio di LB_GETCURSEL alla finestra elenco. Restituisce l'indice dell'elemento attualmente selezionato, se presente. |
CB_GETDROPPEDCONTROLRECT | Riempie la struttura del rettangolo specificata con le coordinate dello schermo di un elenco a discesa. |
CB_GETDROPPEDSTATE | Restituisce TRUE se è aperto un elenco a discesa; in caso contrario, restituisce FALSE. |
CB_GETDROPPEDWIDTH | Restituisce la larghezza minima consentita, in pixel, dell'elenco a discesa. |
CB_GETEDITSEL | Invia un messaggio EM_GETSEL al controllo di modifica e restituisce la posizione iniziale e finale della selezione corrente. Nelle caselle di riepilogo a discesa la routine della finestra restituisce CB_ERR. |
CB_GETEXTENDEDUI | Restituisce TRUE se la casella combinata è una casella combinata o una casella di riepilogo a discesa e il flag extend user-interface è impostato; in caso contrario, restituisce FALSE. |
CB_GETHORIZONTALEXTENT | Invia un messaggio di LB_GETHORIZONTALEXTENT alla finestra elenco. Restituisce la larghezza scorrevole, in pixel, dell'elenco a discesa. |
CB_GETITEMDATA | Invia un messaggio di LB_GETITEMDATA alla finestra elenco. Restituisce il valore associato all'elemento di elenco specificato. |
CB_GETITEMHEIGHT | Invia un messaggio di LB_GETITEMHEIGHT alla finestra elenco. Restituisce l'altezza, in pixel, dell'elemento di elenco disegnato dal proprietario specificato. |
CB_GETLBTEXT | Invia un messaggio di LB_GETTEXT alla finestra elenco. Copia il testo dell'elenco specificato nel buffer specificato. |
CB_GETLBTEXTLEN | Invia un messaggio LB_GETTEXTLEN alla finestra elenco. Restituisce la lunghezza, in TCHAR, del testo dell'elenco specificato. |
CB_GETLOCALE | Invia un messaggio di LB_GETLOCALE alla finestra elenco. Restituisce le impostazioni locali correnti per l'elenco. |
CB_GETMINVISIBLE | Ottiene il numero minimo di elementi visibili nell'elenco a discesa di una casella combinata. |
CB_GETTOPINDEX | Invia un messaggio di LB_GETTOPINDEX alla finestra elenco. Restituisce l'indice del primo elemento visibile nell'elenco a discesa. |
CB_INITSTORAGE | Invia un messaggio di LB_INITSTORAGE alla finestra dell'elenco. Inizializza lo spazio per il numero specificato di elementi e il numero specificato di byte per le stringhe di elemento. |
CB_INSERTSTRING | Invia un messaggio LB_INSERTSTRING alla finestra elenco. Inserisce una voce di elenco nella posizione specificata. |
CB_LIMITTEXT | Invia un messaggio di EM_LIMITTEXT al controllo di modifica. Imposta il numero massimo di caratteri che un utente può immettere nel controllo di modifica. Nelle caselle di riepilogo a discesa la routine della finestra restituisce CB_ERR. |
CB_RESETCONTENT | Invia un messaggio LB_RESETCONTENT alla finestra dell'elenco e rimuove il contenuto dell'elenco. |
CB_SELECTSTRING | Invia un messaggio di LB_SELECTSTRING alla finestra elenco. Seleziona la prima voce di elenco, se presente, che inizia con i caratteri nel testo specificato. |
CB_SETCURSEL | Invia un messaggio LB_SETCURSEL alla finestra dell'elenco e imposta la selezione corrente. |
CB_SETDROPPEDWIDTH | Imposta la larghezza minima consentita, in pixel, dell'elenco a discesa. |
CB_SETEDITSEL | Invia un messaggio di EM_SETSEL al controllo di modifica. Seleziona l'intervallo di testo specificato. Nelle caselle di riepilogo a discesa la routine della finestra restituisce CB_ERR. |
CB_SETEXTENDEDUI | Imposta o cancella il flag esteso dell'interfaccia utente. Questo flag modifica le chiavi che aprono e chiudono l'elenco in una casella combinata o in una casella di riepilogo a discesa. Se la casella combinata è una casella combinata semplice, la routine della finestra restituisce CB_ERR. |
CB_SETHORIZONTALEXTENT | Invia un messaggio di LB_SETHORIZONTALEXTENT alla finestra dell'elenco. Imposta la larghezza scorrevole, in pixel, dell'elenco a discesa. |
CB_SETITEMDATA | Invia un messaggio LB_SETITEMDATA alla finestra elenco. Associa il valore specificato a una voce di elenco. |
CB_SETITEMHEIGHT | Invia un messaggio di LB_SETITEMHEIGHT alla finestra elenco. Imposta l'altezza dell'elemento di elenco disegnato dal proprietario specificato o del campo di selezione. |
CB_SETLOCALE | Invia un messaggio LB_SETLOCALE alla finestra dell'elenco e imposta le impostazioni locali correnti per l'elenco. Le impostazioni locali influiscono sulla modalità di ordinamento dell'elenco se ha lo stile e le stringhe CBS_SORT vengono aggiunte usando CB_ADDSTRING. |
CB_SETMINVISIBLE | Imposta il numero minimo di elementi visibili nell'elenco a discesa di una casella combinata. |
CB_SETTOPINDEX | Invia un messaggio di LB_SETTOPINDEX alla finestra elenco. Scorre l'elenco a discesa in modo che l'elemento specificato si trova nella parte superiore dell'intervallo visibile. |
CB_SHOWDROPDOWN | Mostra o nasconde l'elenco a discesa. Questo messaggio non ha alcun effetto sulle semplici caselle combinate. |
WM_CHAR | Elabora l'input dei caratteri. Nelle caselle di riepilogo a discesa questo messaggio viene passato alla finestra dell'elenco, che sposta la selezione al primo elemento a partire dal carattere specificato. Nelle caselle combinate semplici e a discesa questo messaggio viene passato al controllo di modifica. |
WM_CLEAR | Elimina la selezione di modifica. Nelle caselle combinate semplici e a discesa il controllo di modifica elabora questo messaggio. Nelle caselle di riepilogo a discesa la routine della finestra restituisce CB_ERR. |
WM_COMMAND | Elabora i messaggi di notifica dalla finestra di controllo di modifica e elenco e invia i codici di notifica della casella combinata corrispondenti alla finestra padre. |
Per le notifiche di modifica del controllo, la procedura della finestra può aggiornare la selezione corrente della finestra di elenco, l'indice del cursore e l'indice superiore. Per i messaggi di notifica dell'elenco, la procedura della finestra può aggiornare il contenuto del campo di selezione. | |
WM_COMPAREITEM | Passa il messaggio alla finestra padre, consentendo all'applicazione di specificare la posizione relativa di ordinamento di due elementi di elenco disegnati dal proprietario. La finestra della casella combinata riceve questo messaggio dalla finestra dell'elenco. |
WM_COPY | Copia la selezione di modifica negli Appunti. Nelle caselle combinate semplici e a discesa il controllo di modifica elabora questo messaggio. Nelle caselle di riepilogo a discesa la routine della finestra restituisce CB_ERR. |
WM_CREATE | Inizializza la casella combinata. |
WM_CUT | Elimina la selezione di modifica e la inserisce negli Appunti. Nelle caselle combinate semplici e a discesa il controllo di modifica elabora questo messaggio. Nelle caselle di riepilogo a discesa la routine della finestra restituisce CB_ERR. |
WM_DELETEITEM | Passa il messaggio alla finestra padre, notificando all'applicazione che è stata eliminata una voce di elenco. La finestra della casella combinata riceve questo messaggio dalla finestra dell'elenco. |
WM_DRAWITEM | Passa il messaggio alla finestra padre consentendo all'applicazione di disegnare l'elemento di elenco specificato. La finestra della casella combinata riceve questo messaggio dalla finestra dell'elenco. La procedura della finestra può avere origine anche questo messaggio per fare in modo che l'applicazione disegnare il campo di selezione di una casella di riepilogo a discesa. |
WM_ENABLE | Imposta lo stato per abilitare o impedire l'input del mouse e della tastiera. |
WM_ERASEBKGND | Restituisce 1, che indica che lo sfondo è cancellato. |
WM_GETDLGCODE | Restituisce una combinazione dei valori DLG_WANTCHARS e DLGC_WANTARROWS. |
WM_GETFONT | Restituisce l'handle al tipo di carattere corrente con cui la casella combinata disegnerà il testo. |
WM_GETTEXT | Copia il contenuto del campo di selezione nel buffer specificato. Nelle caselle combinate semplici e a discesa il controllo di modifica elabora questo messaggio. |
WM_GETTEXTLENGTH | Restituisce la lunghezza, in caratteri, del testo nel campo di selezione. Nelle caselle combinate semplici e a discesa il controllo di modifica elabora questo messaggio. |
WM_KEYDOWN | Elabora l'input da tastiera non carattere. Nelle caselle di riepilogo a discesa questo messaggio viene inviato alla finestra dell'elenco, che può mostrare o nascondere se stesso oppure modificarne la selezione corrente o l'indice del cursore. Nelle caselle combinate semplici e a discesa questo messaggio viene passato al controllo di modifica. Il controllo di modifica passa determinati tasti alla finestra dell'elenco, ad esempio i tasti FRECCIA SU e GIÙ e il tasto F4. |
WM_KILLFOCUS | Nasconde l'evidenziazione nel campo di selezione e chiude l'elenco a discesa, se necessario. Se la finestra che riceve lo stato attivo di input fa parte della casella combinata, ad esempio il controllo di modifica, questo messaggio viene ignorato. |
WM_LBUTTONDBLCLK | Uguale a WM_LBUTTONDOWN. |
WM_LBUTTONDOWN | Imposta lo stato attivo sulla casella combinata e, per le caselle combinate a discesa e gli elenchi a discesa, può aprire o chiudere l'elenco. Se apre l'elenco, la procedura della finestra acquisisce il mouse per abilitare la selezione trascinando e rilasciando il pulsante del mouse. |
WM_LBUTTONUP | Rilascia l'acquisizione del mouse se il mouse ha aperto l'elenco. |
WM_MEASUREITEM | Invia il messaggio alla finestra padre, consentendo all'applicazione di modificare il contenuto della struttura MEASUREITEMSTRUCT specificata. La finestra della casella combinata riceve questo messaggio dalla finestra dell'elenco. |
WM_MOUSEMOVE | Invia il messaggio alla finestra dell'elenco se il mouse ha aperto l'elenco e il pulsante del mouse è ancora inattivo. In questo modo un utente può selezionare un elemento trascinando il puntatore del mouse su una voce di elenco e quindi rilasciando il pulsante. |
WM_NCCREATE | Alloca una struttura di dati interna utilizzata dalla routine della finestra della casella combinata. |
WM_NCDESTROY | Libera le risorse allocate in risposta al messaggio di WM_NCCREATE. |
WM_PAINT | Disegna l'area non valida della casella combinata. Se wParam non è NULL, si presuppone che sia un handle del contesto di dispositivo (DC) passato da una funzione di sottoclasse. La procedura della finestra usa il controller di dominio specificato anziché chiamare BeginPaint e EndPaint. |
WM_PASTE | Sostituisce la selezione di modifica con il contenuto degli Appunti. Nelle caselle combinate semplici e a discesa il controllo di modifica elabora questo messaggio. Nelle caselle di riepilogo a discesa la routine della finestra restituisce CB_ERR. |
WM_SETFOCUS | Imposta lo stato attivo sul controllo di modifica o, nelle caselle di riepilogo a discesa, inverte il campo di selezione e attiva il cursore nella finestra dell'elenco. |
WM_SETFONT | Salva l'handle di carattere specificato in una struttura interna, regola le dimensioni del campo di selezione e dell'elenco e invalida la finestra della casella combinata. Il testo nel campo di selezione e l'elenco viene visualizzato nel tipo di carattere salvato. |
WM_SETREDRAW | Imposta o cancella il flag di ridisegno. Se il flag di ridisegno è deselezionato, la casella combinata non viene aggiornata fino a quando il flag non viene nuovamente impostato. |
WM_SETTEXT | Imposta il contenuto del controllo di modifica. Nelle caselle combinate semplici e a discesa il controllo di modifica elabora questo messaggio. Nelle caselle di riepilogo a discesa la routine della finestra restituisce CB_ERR. |
WM_SIZE | Ridimensiona le finestre figlio, se necessario. |
WM_SYSKEYDOWN | Apre o chiude l'elenco a discesa a seconda del tasto freccia premuto dall'utente. |
Tutti gli altri messaggi vengono passati alla funzione di DefWindowProc per l'elaborazione predefinita.