扩展组合框项的图像类型的不同的依赖于 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 结构的 mask 成员中。
修改现有项使用图像
COMBOBOXEXITEM 结构声明并将 mask 数据成员添加到您对感兴趣修改的值。
使用此结构,请调用 CComboBoxEx::GetItem。
使用相应的值,修改 mask、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));