扩展组合框项使用的不同类型的图像由 COMBOBOXEXITEM 结构中的 iImage、iSelectedImage 和 iOverlay 成员确定。 每个值都是控件关联图像列表中图像的索引。 默认情况下,这些成员设置为 0,导致控件不显示项的图像。 如果要对特定项使用图像,可以在插入组合框项时或通过修改现有组合框项来相应地修改结构。
设置新项的图像
如果要插入新项,请使用正确的值初始化 iImage、 iSelectedImage 和 iOverlay 结构成员,然后使用对 CComboBoxEx::InsertItem 的调用插入项。
以下示例将新的扩展组合框项(cbi
)插入扩展组合框控件(m_comboEx
),提供所有三个图像状态的索引:
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 结构的掩码成员。
修改现有项以使用图像
声明 COMBOBOXEXITEM 结构,并将 掩码 数据成员设置为想要修改的值。
使用此结构,调用 CComboBoxEx::GetItem。
使用适当的值修改新返回结构的 掩码、 iImage 和 iSelectedImage 成员。
调用 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));