Sdílet prostřednictvím


Nastavení obrázků pro jednotlivé položky

Různé typy obrázků používaných rozšířenou položkou pole se seznamem jsou určeny hodnotami v iImage, iSelectedImage a iOverlay členy COMBOBOXEXITEM struktury. Každá hodnota je index obrázku v přidruženém seznamu imagí ovládacího prvku. Ve výchozím nastavení jsou tito členové nastaveni na hodnotu 0, což způsobí, že ovládací prvek nezobrazí žádný obrázek položky. Pokud chcete použít obrázky pro určitou položku, můžete strukturu odpovídajícím způsobem upravit, a to buď při vložení položky pole se seznamem, nebo úpravou existující položky pole se seznamem.

Nastavení obrázku pro novou položku

Pokud vkládáte novou položku, inicializujete členy struktury iImage, iSelectedImage a iOverlay se správnými hodnotami a pak vložte položku s voláním CComboBoxEx::InsertItem.

Následující příklad vloží novou rozšířenou položku pole se seznamem (cbi) do rozšířeného ovládacího prvku pole se seznamem (m_comboEx), přičemž poskytuje indexy pro všechny tři stavy obrázků:

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);

Nastavení obrázku pro existující položku

Pokud upravujete existující položku, musíte pracovat s maskou členu COMBOBOXEXITEM struktury.

Úprava existující položky tak, aby používala obrázky

  1. Deklarujte strukturu COMBOBOXEXITEM a nastavte datový člen masky na hodnoty, které vás zajímají.

  2. Pomocí této struktury proveďte volání CComboBoxEx::GetItem.

  3. Upravte masku, iImage a iSelectedImage členů nově vrácené struktury pomocí příslušných hodnot.

  4. Volání CComboBoxEx::SetItem a předání změněné struktury.

Následující příklad ukazuje tento postup prohozením vybraných a nevybraných obrázků třetí rozšířené položky pole se seznamem:

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));

Viz také

Používání atributu CComboBoxEx
Ovládací prvky