设置单个项的图像

扩展组合框项使用的不同类型的图像由 COMBOBOXEXITEM 结构的 iImageiSelectedImageiOverlay 成员确定。 每个值都是控件的关联图像列表中的图像的索引。 默认将这些成员设置为 0,使控件不显示项的图像。 如果要为特定项使用图像,可以在插入组合框项时或通过修改现有组合框项,对该结构做出相应修改。

设置新项的图像

如果要插入新项,请使用正确的值初始化 iImage、iSelectedImage 和 iOverlay 结构成员,然后通过调用 CComboBoxEx::InsertItem 来插入项。

以下示例通过为全部三个图像状态提供索引,向扩展组合框控件 (m_comboEx) 中插入新的扩展组合框项 (cbi):

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

设置现有项的图像

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

修改现有项以使用图像

  1. 声明 COMBOBOXEXITEM 结构,并将 mask 数据成员设置为你希望修改的值

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

  3. 使用相应的值修改新返回的结构的 mask、iImage 和 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
控件