设置单个项的图像

扩展组合框项的图像类型的不同的依赖于 iImageiSelectedImageCOMBOBOXEXITEM 结构的 iOverlay 成员中的值。 每个值都是图像的索引。控件关联的图像列表中。 默认情况下,这些成员未设置为 0,将使控件显示项的图像。 如果您想要为特定项使用图像,可以相应地修改结构,或者,当在一组合框项或通过更改现有的组合框项。

设置新项的图像

如果插入新项,请初始化 iImageiSelectedImageiOverlay 成员与结构相应的值然后插入该项。对 CComboBoxEx::InsertItem

下面的示例插入新的扩展组合框项 (cbi) 中扩展组合框控件 (m_comboEx),为所有三状态图像的索引:

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

将现有项的图像

如果要修改现有项,则需要使用 COMBOBOXEXITEM 结构的 mask 成员中。

修改现有项使用图像

  1. COMBOBOXEXITEM 结构声明并将 mask 数据成员添加到您对感兴趣修改的值。

  2. 使用此结构,请调用 CComboBoxEx::GetItem

  3. 使用相应的值,修改 maskiImage和最近返回结构的 iSelectedImage 成员中,

  4. 调用 CComboBoxEx::SetItem,将修改结构。

下面的示例通过交换第三个扩展组合框项的选择和取消选中的图像演示此过程:

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

请参见

参考

使用 CComboBoxEx

概念

控件 (MFC)