Impostazione delle immagini per un singolo elemento
I diversi tipi di immagini usati dall'elemento casella combinata estesa sono determinati dai valori nei membri iImage, iSelectedImage e iOverlay della struttura COMBOBOXEXITEM . Ogni valore è l'indice di un'immagine nell'elenco di immagini associato del controllo. Per impostazione predefinita, questi membri sono impostati su 0 e il controllo non visualizza alcuna immagine per l'elemento. Se si desidera utilizzare immagini per un elemento specifico, è possibile modificare la struttura di conseguenza, quando si inserisce l'elemento della casella combinata o modificando un elemento casella combinata esistente.
Impostazione dell'immagine per un nuovo elemento
Se si inserisce un nuovo elemento, inizializzare i membri della struttura iImage, iSelectedImage e iOverlay con i valori appropriati 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 indici per tutti e tre gli stati dell'immagine:
COMBOBOXEXITEM cbi = { 0 };
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);
Impostazione dell'immagine per un elemento esistente
Se si modifica un elemento esistente, è necessario utilizzare il membro mask di una struttura COMBOBOXEXITEM .
Per modificare un elemento esistente per l'uso delle immagini
Dichiarare una struttura COMBOBOXEXITEM e impostare il membro dati mask sui valori che si desidera modificare.
Usando questa struttura, effettuare una chiamata a CComboBoxEx::GetItem.
Modificare i membri mask, iImage e iSelectedImage della struttura appena restituita usando i valori appropriati.
Effettuare una chiamata a CComboBoxEx::SetItem passando la struttura modificata.
Nell'esempio seguente viene illustrata questa procedura scambiando le immagini selezionate e non selezionate del terzo elemento della 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));