设置单个项的图像
扩展组合框项目使用的图像的不同类型取决于 iImage、 iSelectedImage和 COMBOBOXEXITEM 结构的 iOverlay 成员的值。每个值是一个图像的索引在关联的图像列表控件。默认情况下,这些成员未设置为 0,这使得控件显示项目的图像。如果要针对给定项目使用图像,您可以相应地修改结构,其中之一,在插入组合框项或通过修改现有的组合框项。
设置新项的图像
如果插入一个新项目,请初始化 iImage、 iSelectedImage和 iOverlay 结构成员具有正确的值然后插入的项的调用。 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 结构的 掩码 成员。
修改现有项目使用图像
声明 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));