Définition des images pour un élément individuel
Les différents types d'images utilisées par l'élément étendu de zone de liste déroulante sont déterminés par les valeurs dans iImage, iSelectedImage, et les membres d' iOverlay de la structure de COMBOBOXEXITEM .Chaque valeur est l'index d'une image dans la liste d'images associée du contrôle.Par défaut, ces membres sont définis à 0, rendant pour afficher le contrôle aucune image pour l'élément.Si vous souhaitez utiliser des images pour un élément spécifique, vous pouvez modifier la structure par conséquent, soit en insérant l'élément de zone de liste déroulante ou en modifiant un élément existant de zone de liste déroulante.
Définir l'image pour un nouvel élément
Si vous insérez un nouvel élément, initialisez iImage, iSelectedImage, et les membres de structures d' iOverlay avec les valeurs correctes puis insérez l'élément avec un appel à CComboBoxEx::InsertItem.
L'exemple suivant insère un nouvel élément étendu de zone de liste déroulante (cbi) dans le contrôle zone de liste déroulante étendu (m_comboEx), en fournissant des index pour chacun des trois états d'image :
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);
Définir l'image d'un élément existant
Si vous modifiez un élément existant, vous devez utiliser le membre de mask d'une structure de COMBOBOXEXITEM .
Pour modifier un élément existant pour utiliser des images
Déclarez une structure de COMBOBOXEXITEM et définissez le membre de données de mask aux valeurs que vous vous intéressez à modifier.
Cette structure, effectuez un appel de CComboBoxEx::GetItem.
Modifiez mask, iImage, et les membres d' iSelectedImage de la structure récemment retournée, en utilisant les valeurs appropriées.
Effectuez un appel de CComboBoxEx::SetItem, en passant la structure modifiée.
L'exemple suivant illustre cette procédure en en échangeant des images sélectionnées et désactivées du troisième élément étendu de zone de liste déroulante :
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));