Festlegen der Bilder für ein bestimmtes Element
Die verschiedenen Arten von Bildern, die vom erweiterten Kombinationsfeldelement verwendet werden, werden durch die Werte in der iImage-, iSelectedImage- und iOverlay-Member der COMBOBOXEXITEM-Struktur bestimmt. Jeder Wert ist der Index eines Bilds in der zugeordneten Bildliste des Steuerelements. Standardmäßig sind diese Elemente auf 0 festgelegt, sodass das Steuerelement kein Bild für das Element anzeigt. Wenn Sie Bilder für ein bestimmtes Element verwenden möchten, können Sie die Struktur entsprechend ändern, entweder beim Einfügen des Kombinationsfeldelements oder durch Ändern eines vorhandenen Kombinationsfeldelements.
Festlegen des Bilds für ein neues Element
Wenn Sie ein neues Element einfügen, initialisieren Sie die Elemente "iImage", "iSelectedImage" und "iOverlay" mit den richtigen Werten, und fügen Sie das Element mit einem Aufruf von "CComboBoxEx::InsertItem" ein.
Im folgenden Beispiel wird ein neues erweitertes Kombinationsfeldelement (cbi
) in das erweiterte Kombinationsfeld-Steuerelement (m_comboEx
), das Indizes für alle drei Bildzustände angibt, eingefügt:
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);
Festlegen des Bilds für ein vorhandenes Element
Wenn Sie ein vorhandenes Element ändern, müssen Sie mit dem Maskenelement einer COMBOBOXEXITEM-Struktur arbeiten.
So ändern Sie ein vorhandenes Element zur Verwendung von Bildern
Deklarieren Sie eine COMBOBOXEXITEM-Struktur , und legen Sie das Maskendatenelement auf die Werte fest, die Sie ändern möchten.
Verwenden Sie diese Struktur, rufen Sie CComboBoxEx::GetItem auf.
Ändern Sie die Masken-, iImage- und iSelectedImage-Elemente der neu zurückgegebenen Struktur mithilfe der entsprechenden Werte.
Rufen Sie CComboBoxEx::SetItem auf, und übergeben Sie die geänderte Struktur.
Im folgenden Beispiel wird dieses Verfahren veranschaulicht, indem die ausgewählten und nicht ausgewählten Bilder des dritten erweiterten Kombinationsfeldelements ausgetauscht werden:
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));