définir les images pour un élément individuel
Les différents types d'images utilisés par l'élément de la zone de liste modifiable étendue sont déterminés par les valeurs de iImage, iSelectedImage, et les membres iOverlay de la structure COMBOBOXEXITEM. Chaque valeur est l'index d'une image dans la liste des images associée du contrôle. Par défaut, les membres sont placés sur 0, entrâinant le non-affichage des images de l'élément par le contrôle. Si vous souhaitez utiliser des images pour un élément spécifique, vous pouvez modifier la structure en conséquence, soit quand vous insérez l'élément de la zone de liste modifiable ou quand vous modifiez un élément de la zone de liste modifiable.
Définir l'image d'un nouvel élément
Si vous insérez un nouvel élément, initialisez iImage, iSelectedImage, et les membres de la structure iOverlay avec les valeurs appropriées puis insérez l'élément par un appel à CComboBoxEx::InsertItem.
L'exemple suivant insère un nouvel élément de la zone de liste modifiable étendue (cbi) dans le contrôle de la zone de liste modifiable étendue (m_comboEx), en fournissant des indices chacun des états de l'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 mask d'une structure de COMBOBOXEXITEM.
Modifier un élément existant pour qu'il utilise des images
Déclarez une structure de COMBOBOXEXITEM et fixez le membre de données mask aux valeurs que vous souhaitiez modifier.
En utilisant cette structure, effectuez un appel à CComboBoxEx::GetItem.
Modifiez les membres mask, iImage, et iSelectedImage de la structure nouvellement retournée, en utilisant les valeurs appropriées.
Effectuez un appel à CComboBoxEx::SetItem, en passant dans la structure modifiée.
L'exemple suivant illustre cette procédure en permutant les images sélectionnées et désélectionnées du troisième élément étendue de la zone de liste modifiable:
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));