Impostare le immagini per un singolo elemento
I diversi tipi di immagini utilizzate dall'elemento casella combinata estesa sono determinati dai valori in iImage, iSelectedImagee membri di iOverlay della struttura di COMBOBOXEXITEM .Ogni valore è l'indice di un'immagine nell'elenco immagini associato al controllo.Per impostazione predefinita, questi membri vengono impostati su 0, in modo che il controllo su non visualizza immagine per l'elemento.Se si desidera utilizzare immagini per un elemento specifico, è possibile modificare la struttura, spostandosi quando si inserisce l'elemento casella combinata o modifica un elemento casella combinata esistente.
Impostare l'immagine per un nuovo elemento
Se si inserisce un nuovo elemento, inizializzare iImage, iSelectedImagee i membri della struttura di iOverlay con i valori corretti e quindi inserire l'elemento con una chiamata a CComboBoxEx::InsertItem.
Nell'esempio seguente viene inserito un nuovo elemento casella combinata estesa (cbi) nel controllo casella combinata estesa (m_comboEx), fornendo gli indici per i tre stati di immagine:
COMBOBOXEXITEM cbi = {0};
CString str;
int nItem;
cbi.mask = CBEIF_IMAGE | CBEIF_INDENT | CBEIF_OVERLAY |
CBEIF_SELECTEDIMAGE | CBEIF_TEXT;
cbi.iItem = 0;
cbi.pszText = _T("Item 0");
cbi.iImage = 0;
cbi.iSelectedImage = 1;
cbi.iOverlay = 2;
cbi.iIndent = (0 & 0x03); //Set indentation according
//to item position
nItem = m_ComboBoxEx.InsertItem(&cbi);
ASSERT(nItem == 0);
Impostare l'immagine da un elemento esistente
Se si modifica un elemento esistente, è necessario utilizzare il membro mask di una struttura di COMBOBOXEXITEM .
Per modificare un elemento esistente per utilizzare immagini
Dichiarare una struttura di COMBOBOXEXITEM e impostare il membro dati di mask i valori che si desidera modificare.
Utilizzando questa struttura, effettuare una chiamata a CComboBoxEx::GetItem.
Modificare mask, iImagee i membri di iSelectedImage della struttura appena restituita, utilizzando i valori appropriati.
Effettuare una chiamata a CComboBoxEx::SetItem, passando nella struttura modificata.
Nell'esempio seguente viene illustrata questa routine scambiando le immagini selezionate e deselezionato del terzo elemento casella combinata estesa:
COMBOBOXEXITEM cbi = {0};
int iImageTemp;
cbi.mask = CBEIF_IMAGE | CBEIF_SELECTEDIMAGE;
cbi.iItem = 0;
m_ComboBoxEx.GetItem(&cbi);
iImageTemp = cbi.iImage;
cbi.iImage = cbi.iSelectedImage;
cbi.iSelectedImage = iImageTemp;
VERIFY(m_ComboBoxEx.SetItem(&cbi));