各項目のイメージの設定
拡張コンボ ボックス項目で使用されるさまざまな種類のイメージは、 COMBOBOXEXITEM 構造体の iImage、 iSelectedImage、およびiOverlay メンバーの値によって決定されます。 各値は、コントロールの関連付けられたイメージ リスト内のイメージのインデックスです。 既定では、これらのメンバーは 0 に設定されているため、コントロールには項目のイメージが表示されません。 特定の項目に対してイメージを使用する場合は、コンボ ボックス項目を挿入するとき、または既存のコンボ ボックス項目を変更して、構造を適宜変更することができます。
新しい項目のイメージの設定
新しい項目を挿入する場合は、適切な値を使用して iImage、 iSelectedImage、および iOverlay 構造体のメンバーを初期化し、CComboBoxEx:: InsertItem への呼び出しを使用して項目を挿入します。
次の例では、新しい拡張コンボ ボックス項目 (cbi
) を拡張コンボ ボックス コントロール (m_comboEx
) に挿入し、3 つのイメージ状態すべてのインデックスを提供します:
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 メンバーを使用する必要があります。
既存の項目を変更してイメージを使用するには
COMBOBOXEXITEM 構造体を宣言し、変更対象の値に mask データ メンバーを設定します。
この構造体を使用して、 CComboBoxEx:: GetItem を呼び出します。
適切な値を使用して、新しく返された構造体の mask、 IImage、および iSelectedImage メンバーを変更します。
CComboBoxEx:: SetItem を呼び出して、変更された構造体を渡します。
次の例では、3 番目の拡張コンボ ボックス項目の選択したイメージと選択されていないイメージをスワップすることにより、この手順を示します。
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));