擴充下拉式方塊專案所使用的不同影像類型是由 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。
使用適當的值,修改新傳回結構的 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));