Définition des images d'un élément individuel
Les différents types d’images utilisés par l’élément de zone de liste modifiable étendue sont déterminés par les valeurs dans les membres iImage, iSelectedImage et iOverlay de la structure CO Mo OBOXEXITEM. 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 sur 0, ce qui entraîne l’affichage de l’image du contrôle pour l’élément. Si vous souhaitez utiliser des images pour un élément spécifique, vous pouvez modifier la structure en conséquence, soit lors de l’insertion de l’élément de zone de liste modifiable, soit en modifiant un élément de zone de liste modifiable existant.
Définition de l’image d’un nouvel élément
Si vous insérez un nouvel élément, initialisez les membres de la structure iImage, iSelectedImage et iOverlay avec les valeurs appropriées, puis insérez l’élément avec un appel à CComboBoxEx ::InsertItem.
L’exemple suivant insère un nouvel élément de zone de liste modifiable étendue (cbi
) dans le contrôle de zone de liste modifiable étendue (m_comboEx
), fournissant des index pour les trois états d’image :
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);
Définition de l’image d’un élément existant
Si vous modifiez un élément existant, vous devez utiliser le membre masque d’une structure CO Mo OBOXEXITEM.
Pour modifier un élément existant pour utiliser des images
Déclarez une structure CO Mo OBOXEXITEM et définissez le membre de données de masque sur les valeurs que vous souhaitez modifier.
À l’aide de cette structure, appelez CComboBoxEx ::GetItem.
Modifiez les membres mask, iImage et iSelectedImage de la structure nouvellement retournée, à l’aide des valeurs appropriées.
Effectuez un appel à CComboBoxEx ::SetItem, en passant la structure modifiée.
L’exemple suivant illustre cette procédure en échangeant les images sélectionnées et non sélectionnées du troisième élément de zone de liste modifiable étendue :
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));