La classe CComboBox fornisce la funzionalità di una casella combinata di Windows.
Una casella combinata è costituito da una casella di riepilogo combinata con un controllo statico o un controllo di modifica. La porzione della casella di riepilogo del controllo possa essere visualizzata in ogni momento o può scendere solo quando l'utente seleziona la freccia a discesa accanto al controllo.
L'elemento attualmente selezionato (se presente) nella casella di riepilogo viene visualizzato in statica o controllo di modifica. Inoltre, se la casella combinata ha lo stile elenco a discesa, l'utente può digitare il carattere iniziale di uno degli elementi nell'elenco e la casella di riepilogo, se visibile, metterà in evidenza l'elemento successivo con quel carattere iniziale.
La tabella segue&nte confronta la casella combinata tre stili.nbsp;
Stile
Quando la casella di riepilogo è visibile?
Controllo statico o modifica?
Semplice
Sempre
Modifica
Menu a discesa
Quando è sceso verso il basso
Modifica
Elenco a discesa
Quando è sceso verso il basso
Statica
È possibile creare un oggetto CComboBox da un modello di finestra di dialogo o direttamente nel codice. In entrambi i casi, prima di chiamare il costruttore CComboBox per costruire l'oggetto CComboBox ; quindi chiamare la funzione membro Create per creare il controllo e allegarlo all'oggetto CComboBox.
Se si desidera gestire i messaggi di notifica di Windows inviati da una casella combinata al suo genitore (di solito una classe derivata da CDialog), aggiungere una funzione membro mappa messaggi voce e gestione dei messaggi alla classe padre per ogni messaggio.
Ogni voce della mappa messaggi assume la seguente forma:
ON_Notifica(id,memberFxn)
dove id specifica l'ID della finestra figlio del controllo casella combinata l'invio della notifica e memberFxn è il nome della funzione membro padre che lei ha scritto per gestire la notifica.
Prototipo di funzione dei genitori è la seguente:
afx_msgvoidmemberFxn();
L'ordine in cui certe notifiche vengono inviate non può essere previsto. In particolare, una notifica CBN_SELCHANGE può verificarsi prima o dopo una notifica di CBN_CLOSEUP.
Potenziale mappa messaggi voci sono i seguenti:
O&N_CBN_CLOSEUPnbsp; (Windows 3.1 e successive). Casella di riepilogo di una casella combinata ha chiuso. Questo messaggio di notifica viene inviato non per una casella combinata che ha lo stile CBS_SIMPLE.
O&N_CBN_DBLCLKnbsp; L'utente fa doppio clic su una stringa nella casella di riepilogo di una casella combinata. Questo messaggio di notifica viene inviato solo per una casella combinata con lo stile CBS_SIMPLE . Per una casella combinata con lo stile CBS_DROPDOWN o CBS_DROPDOWNLIST , un doppio clic non può verificarsi perché un singolo clic si nasconde nella casella di riepilogo.
O&N_CBN_DROPDOWNnbsp; Casella di riepilogo di una casella combinata sta per cadere giù (essere reso visibile). Questo messaggio di notifica può verificarsi solo per una casella combinata con lo stile CBS_DROPDOWN o CBS_DROPDOWNLIST.
O&N_CBN_EDITCHANGEnbsp; L'utente ha preso un'azione che alterò il testo nella parte del controllo di modifica di una casella combinata. A differenza del messaggio CBN_EDITUPDATE , questo messaggio viene inviato dopo lo schermo aggiornamenti di Windows. Esso non viene inviata se la casella combinata ha lo stile CBS_DROPDOWNLIST.
O&N_CBN_EDITUPDATEnbsp; La parte del controllo di modifica di una casella combinata sta per visualizzare il testo alterato. Questo messaggio di notifica viene inviato dopo il testo formattato ha il controllo, ma prima Visualizza il testo. Esso non viene inviata se la casella combinata ha lo stile CBS_DROPDOWNLIST.
O&N_CBN_ERRSPACEnbsp; La casella combinata non può allocare memoria sufficiente per soddisfare una richiesta specifica.
O&N_CBN_SELENDCANCELnbsp; (Windows 3.1 e successive). Indica che la selezione dell'utente deve essere annullata. L'utente fa clic su un elemento e quindi fa clic su un'altra finestra o controllo per nascondere la casella di riepilogo di una casella combinata. Questo messaggio di notifica viene inviato prima il messaggio di notifica CBN_CLOSEUP per indicare che la selezione dell'utente deve essere ignorata. Il CBN_SELENDCANCEL o CBN_SELENDOK il messaggio di notifica viene inviato, anche se il messaggio di notifica di CBN_CLOSEUP non viene inviato (come nel caso di una casella combinata con lo stile CBS_SIMPLE ).
O&N_CBN_SELENDOKnbsp; L'utente seleziona un elemento e quindi preme il tasto invio o scatta il tasto freccia giù per nascondere la casella di riepilogo di una casella combinata. Questo messaggio di notifica viene inviato prima il messaggio CBN_CLOSEUP per indicare che la selezione dell'utente deve essere considerata valida. Il CBN_SELENDCANCEL o CBN_SELENDOK il messaggio di notifica viene inviato, anche se il messaggio di notifica di CBN_CLOSEUP non viene inviato (come nel caso di una casella combinata con lo stile CBS_SIMPLE ).
O&N_CBN_KILLFOCUSnbsp; La casella combinata perde lo stato attivo per l'input.
O&N_CBN_SELCHANGEnbsp; La selezione nella casella di riepilogo di una casella combinata sta per essere modificato di conseguenza l'utente facendo clic nella casella di riepilogo o modificare la selezione utilizzando i tasti freccia. Durante l'elaborazione di questo messaggio, solo il testo nel controllo di modifica della casella combinata può essere recuperato tramite GetLBText o un'altra funzione simile. GetWindowText non può essere utilizzato.
O&N_CBN_SETFOCUSnbsp; La casella combinata riceve lo stato attivo per l'input.
Se si crea un oggetto CComboBox all'interno di una finestra di dialogo (attraverso una risorsa di finestra), l'oggetto CComboBox viene eliminato automaticamente quando l'utente chiude la finestra di dialogo.
Se si incorpora un oggetto CComboBox all'interno di un altro oggetto window, non è necessario distruggerlo. Se si crea l'oggetto CComboBox nello stack, viene distrutto automaticamente. Se si crea l'oggetto CComboBox sull'heap utilizzando la nuova funzione, è necessario chiamare eliminare sull'oggetto per distruggerla quando viene eliminata la casella combinata di Windows.