Impostazione delle immagini per un singolo elemento
I diversi tipi di immagini utilizzate dall'elemento casella combinata estesa sono determinati dai valori in iImage, iSelectedImage e membri di iOverlay della struttura di COMBOBOXEXITEM. Ogni valore è l'indice di un'immagine nell'elenco immagini collegato del controllo. Per impostazione predefinita, questi membri vengono impostate su 0, e il controllo non è visualizzata un'immagine per l'elemento. Se si desidera utilizzare immagini per un elemento specifico, è possibile modificare la struttura, uno quando si inserisce l'elemento casella combinata o modifica un elemento della casella combinata esistente.
Impostare l'immagine per un nuovo elemento
Se si incolla un nuovo elemento, inizializzare iImage, iSelectedImage e i membri della struttura di iOverlay con i valori appropriati e quindi inserire l'elemento con una chiamata a CComboBoxEx::InsertItem.
Nell'esempio seguente viene inserito un nuovo elemento della 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 per un elemento esistente
Se si modifica un elemento esistente, è necessario utilizzare il membro di maschera di una struttura di COMBOBOXEXITEM.
Per modificare un elemento esistente per utilizzare immagini
Dichiarare una struttura di COMBOBOXEXITEM e impostare il membro dati di maschera i valori che si desidera modificare.
Utilizzando questa struttura, effettuare una chiamata a CComboBoxEx::GetItem.
Modificare maschera, iImage e i membri di iSelectedImage struttura appena restituita, utilizzando i valori appropriati.
Fare una chiamata a CComboBoxEx::SetItem, passando nella struttura modificata.
Nell'esempio seguente viene illustrata questa procedura scambiando le immagini selezionate e unchecked 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));