Funzionalità casella combinata

Questo documento illustra le caratteristiche della casella combinata. Per ulteriori informazioni, vedi gli argomenti seguenti:

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

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 funzione DlgDirListComboBox per 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 CB_DIR sono simili alle funzioni 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_edizione Standard TITEMDATA associa un valore DWORD a una voce di elenco e il CB_GETITEMDATA recupera il valore associato a una voce di elenco.

Nell'esempio in Creazione di una casella combinata creata 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_edizione Standard TEXTENDEDUI alla casella combinata. Un valore TRUE per il parametro wParam abilita l'interfaccia utente estesa. Un valore FAL edizione Standard 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".

screen shot of an edit control with the cue text

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_CLOedizione Standard UP 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 la visualizzazione del 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 che 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_edizione Standard LCHANGE Indica che la selezione corrente è stata modificata.
CBN_edizione Standard LENDCANCEL Indica che la selezione effettuata nell'elenco a discesa, mentre è stata eliminata, deve essere ignorata.
CBN_edizione Standard LENDOK Indica che l'elenco a discesa selezionato, mentre è stato eliminato, deve essere accettato.
CBN_edizione Standard TFOCUS 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.

Message Descrizione
CB_ADDSTRING Invia un messaggio 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 di LB_FINDSTRING alla finestra dell'elenco. Questo messaggio restituisce l'indice del primo elemento dell'elenco che inizia con il testo specificato.
CB_FINDSTRINGEXACT Invia un messaggio di LB_FINDSTRING alla finestra dell'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_GETCURedizione Standard L Invia un messaggio LB_GETCURedizione Standard L 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 un elenco a discesa è aperto; in caso contrario, restituisce FAL edizione Standard.
CB_GETDROPPEDWIDTH Restituisce la larghezza minima consentita, in pixel, dell'elenco a discesa.
CB_GETEDITedizione Standard L Invia un messaggio EM_GETedizione Standard L 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 FAL edizione Standard.
CB_GETHORIZONTALEXTENT Invia un messaggio 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 dell'elenco. Restituisce il valore associato all'elemento di elenco specificato.
CB_GETITEMHEIGHT Invia un messaggio di LB_GETITEMHEIGHT alla finestra dell'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 di 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 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 elenco. Inizializza lo spazio per il numero specificato di elementi e il numero specificato di byte per le stringhe di elemento.
CB_INedizione Standard RTSTRING Invia un messaggio LB_INedizione Standard RTSTRING alla finestra dell'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_REedizione Standard TCONTENT Invia un messaggio LB_REedizione Standard TCONTENT alla finestra dell'elenco e rimuove il contenuto dell'elenco.
CB_edizione Standard LECTSTRING Invia un messaggio LB_edizione Standard LECTSTRING alla finestra dell'elenco. Seleziona la prima voce di elenco, se presente, che inizia con i caratteri nel testo specificato.
CB_edizione Standard TCUR edizione Standard L Invia un messaggio LB_edizione Standard TCUR edizione Standard L alla finestra dell'elenco e imposta la selezione corrente.
CB_edizione Standard TDROPPEDWIDTH Imposta la larghezza minima consentita, in pixel, dell'elenco a discesa.
CB_edizione Standard TEDIT edizione Standard L Invia un messaggio EM_edizione Standard T edizione Standard L al controllo di modifica. Seleziona l'intervallo di testo specificato. Nelle caselle di riepilogo a discesa la routine della finestra restituisce CB_ERR.
CB_edizione Standard TEXTENDEDUI 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_edizione Standard THORIZONTALEXTENT Invia un messaggio LB_edizione Standard THORIZONTALEXTENT alla finestra dell'elenco. Imposta la larghezza scorrevole, in pixel, dell'elenco a discesa.
CB_edizione Standard TITEMDATA Invia un messaggio LB_edizione Standard TITEMDATA alla finestra dell'elenco. Associa il valore specificato a una voce di elenco.
CB_edizione Standard TITEMHEIGHT Invia un messaggio LB_edizione Standard TITEMHEIGHT alla finestra dell'elenco. Imposta l'altezza dell'elemento di elenco disegnato dal proprietario specificato o del campo di selezione.
CB_edizione Standard TLOCALE Invia un messaggio LB_edizione Standard TLOCALE 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 di CBS_SORT vengono aggiunte usando CB_ADDSTRING.
CB_edizione Standard TMINVISIBLE Imposta il numero minimo di elementi visibili nell'elenco a discesa di una casella combinata.
CB_edizione Standard TTOPINDEX Invia un messaggio LB_edizione Standard TTOPINDEX alla finestra dell'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_ERAedizione Standard BKGND 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 Inserisce il messaggio nella 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_MOUedizione Standard MOVE 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_edizione Standard TFOCUS 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_edizione Standard TFONT 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_edizione Standard TREDRAW 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_edizione Standard TTEXT 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 DefWindowProc per l'elaborazione predefinita.