各項目のイメージの設定

更新 : 2007 年 11 月

拡張コンボ ボックス項目で使用されるイメージの種類は、COMBOBOXEXITEM 構造体の iImageiSelectedImage、および iOverlay メンバの値で決定されます。それぞれの値は、コントロールに関連付けられているイメージ リストにあるイメージのインデックスです。既定では、このメンバは 0 に設定されており、コントロールには項目のイメージは表示されません。特定の項目に対してイメージを使用するには、コンボ ボックス項目を挿入するとき、または既存のコンボ ボックス項目を変更するときに、構造体メンバの値を変更します。

新規項目のイメージの設定

新しい項目を挿入する場合、iImageiSelectedImage、および iOverlay 構造体メンバを適切な値で初期化し、CComboBoxEx::InsertItem を呼び出して項目を挿入します。

次の例では、新しい拡張コンボ ボックス項目 (cbi) を拡張コンボ ボックス コントロール (m_comboEx) に挿入し、3 種類のイメージの状態すべてに対してインデックスを指定します。

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 メンバを操作します。

イメージを使用するように既存項目を変更するには

  1. COMBOBOXEXITEM 構造体を宣言し、mask データ メンバを目的の値に設定します。

  2. この構造体を使用して、CComboBoxEx::GetItem を呼び出します。

  3. 新しく返された構造体の maskiImage、および iSelectedImage メンバを適切な値に変更します。

  4. 変更した構造体を引数として 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));

参照

概念

コントロール (MFC)

参照

CComboBoxEx の使い方