Informazioni sui controlli ComboBoxEx

I controlli ComboBoxEx sono controlli casella combinata che forniscono supporto nativo per le immagini degli elementi. Per rendere facilmente accessibili le immagini degli elementi, il controllo fornisce supporto per l'elenco di immagini. Usando questo controllo, è possibile fornire la funzionalità di una casella combinata senza dover disegnare manualmente elementi grafici.

Questo argomento include le sezioni seguenti.

Creazione di controlli ComboBoxEx

In effetti, un controllo ComboBoxEx crea una casella combinata figlio ed esegue attività di disegno proprietario in base a un elenco di immagini assegnato. Pertanto, lo stile CBS_OWNERDRAWFIXED è implicito e non è necessario usarlo durante la creazione del controllo. Poiché gli elenchi di immagini vengono usati per fornire elementi grafici, non è possibile utilizzare lo stile CBS_OWNERDRAWVARIABLE.

È necessario inizializzare un controllo ComboBoxEx chiamando la funzione InitCommonControlsEx, specificando ICC_Uedizione StandardREX_CLASedizione Standard S nella struttura INITCOMMONCONTROL edizione Standard X associata.

È possibile creare un controllo ComboBoxEx usando la funzione CreateWindowEx e specificando WC_COMBOBOXEX come classe window. La classe viene registrata quando la funzione InitCommonControlsEx viene chiamata come illustrato in precedenza.

I controlli ComboBoxEx vengono creati senza un elenco di immagini predefinito. Per usare immagini di elementi, è necessario creare un elenco di immagini per il controllo ComboBoxEx e assegnarlo al controllo usando il messaggio CBEM_edizione Standard TIMAGELIST. Se non si assegna un elenco di immagini al controllo ComboBoxEx, il controllo visualizza solo il testo dell'elemento.

Stili di controllo ComboBoxEx

I controlli ComboBoxEx supportano solo gli stili ComboBox seguenti:

  • CBS_SIMPLE
  • CBS_DROPDOWN
  • CBS_DROPDOWNLIST
  • WS_CHILD

Esistono anche diversi stili estesi di controllo ComboBoxEx usati solo da ComboBoxEx.

Nota

Lo stile CBS_SIMPLE potrebbe non funzionare correttamente in alcuni casi.

 

Poiché il controllo ComboBoxEx esegue attività di disegno proprietario in base a un elenco di immagini assegnato, lo stile di CBS_OWNERDRAWFIXED è implicito. Non è necessario usarlo durante la creazione del controllo. Poiché gli elenchi di immagini vengono usati per fornire elementi grafici, non è possibile utilizzare lo stile CBS_OWNERDRAWVARIABLE. Il controllo ComboBoxEx supporta anche gli stili estesi del controllo ComboBoxEx che forniscono funzionalità aggiuntive.

Elementi di controllo ComboBoxEx

I controlli ComboBoxEx mantengono le informazioni sugli elementi usando una struttura COMBOBOXEXITEM. Questa struttura include membri per indici di elementi, indici di immagine (normale, stato di selezione e sovrapposizione), valori di rientro, stringhe di testo e valori specifici dell'elemento.

Il controllo ComboBoxEx consente di accedere e manipolare facilmente gli elementi tramite la messaggistica. Per aggiungere o eliminare un elemento, inviare il messaggio CBEM_INedizione Standard RTITEM o CBEM_DELETEITEM. È possibile modificare gli elementi attualmente presenti nel controllo usando il messaggio CBEM_edizione Standard TITEM.

Elementi di callback

I controlli ComboBoxEx supportano gli attributi degli elementi di callback. È possibile specificare un elemento come elemento di callback quando lo si aggiunge al controllo usando CBEM_INedizione Standard RTITEM. Quando si assegnano valori alla struttura COMBOBOXEXITEM di un elemento, è necessario specificare i valori del flag di callback appropriati. Di seguito sono riportati i membri della struttura COMBOBOXEXITEM e i valori del flag di callback corrispondenti.

Membro Valore di callback
pszText LPSTR_TEXTCALLBACK
iImage I_IMAGECALLBACK
iSelectedImage I_IMAGECALLBACK
iOverlay I_IMAGECALLBACK
iIndent I_INDENTCALLBACK

 

Il controllo richiederà informazioni sugli elementi di callback inviando CBEN_GETDISPINFO codici di notifica. Questa notifica viene inviata sotto forma di messaggio di WM_NOTIFY. Quando l'applicazione elabora questo messaggio, deve fornire le informazioni richieste per il controllo. Se si imposta il membro mask della struttura COMBOBOXEXITEM associata su CBEIF_DI_edizione Standard TITEM, il controllo archivierà i dati dell'elemento e non lo richiederà di nuovo.

Elenchi di immagini del controllo ComboBoxEx

Se si desidera che un controllo ComboBoxEx visualizzi icone con elementi, è necessario fornire un elenco di immagini. I controlli ComboBoxEx supportano fino a tre immagini per un elemento, uno per lo stato selezionato, uno per lo stato non selezionato e uno per un'immagine di sovrapposizione. Assegnare un elenco di immagini esistente a un controllo ComboBoxEx usando il messaggio CBEM_edizione Standard TIMAGELIST.

La struttura COMBOBOXEXITEM contiene membri che rappresentano gli indici di immagine per ogni elenco di immagini (selezionato, deselezionato e sovrimpresso). Per ogni elemento, impostare questi membri per visualizzare le immagini desiderate. Non è necessario specificare gli indici di immagine per ogni tipo di immagine. È possibile combinare e associare i tipi di immagine come desiderato, ma impostare sempre il membro mask della struttura COMBOBOXEXITEM per indicare quali membri vengono usati. Il controllo ignora i membri che non sono stati contrassegnati come validi.

Nota

Se si utilizza lo stile CBS_SIMPLE , le icone non vengono visualizzate.

 

Informazioni sui messaggi di notifica del controllo ComboBoxEx

Un controllo ComboBoxEx invia messaggi di notifica per segnalare le modifiche all'interno di sé o per richiedere informazioni sull'elemento di callback. L'elemento padre del controllo riceve tutti i messaggi WM_COMMAND dalla casella combinata contenuta nel controllo ComboBoxEx. Il controllo ComboBoxEx invia le proprie notifiche usando WM_NOTIFY messaggi. Di conseguenza, il proprietario del controllo deve essere preparato per elaborare entrambe le forme di messaggi di notifica.

Di seguito sono riportati i codici di notifica specifici di ComboBoxEx inviati tramite WM_NOTIFY messaggi.

Notifica Descrizione
CBEN_BEGINEDIT Segnala che l'utente ha attivato l'elenco a discesa o ha fatto clic nella casella di modifica del controllo.
CBEN_ENDEDIT Segnala che l'utente ha selezionato un elemento dall'elenco a discesa o ha concluso un'operazione di modifica all'interno della casella di modifica.
CBEN_DELETEITEM Segnala che un elemento è stato eliminato.
CBEN_GETDISPINFO Richiede informazioni sugli attributi di un elemento.
CBEN_INedizione Standard RTITEM Segnala che un elemento è stato inserito nel controllo .

 

Inoltro dei messaggi di controllo ComboBoxEx

Di seguito sono riportati i messaggi della casella combinata standard inoltrati da un controllo ComboBoxEx alla relativa casella combinata figlio. Alcuni di questi messaggi possono essere elaborati dal controllo ComboBoxEx prima o dopo l'inoltro del messaggio.

Di seguito sono riportati i messaggi di windows inoltrati da un controllo ComboBoxEx alla relativa finestra padre:

  • WM_COMMAND (include tutte le notifiche di CBN_).
  • WM_NOTIFY