Ustawianie obrazów dla pojedynczego elementu

Różne typy obrazów używanych przez element rozszerzonego pola kombi są określane przez wartości w strukturze comboimage, iSelectedImage i iOverlaystruktury COMBOBOXEXITEM . Każda wartość jest indeksem obrazu na skojarzonej liście obrazów kontrolki. Domyślnie te elementy członkowskie są ustawione na 0, co powoduje, że kontrolka nie wyświetla żadnego obrazu dla elementu. Jeśli chcesz użyć obrazów dla określonego elementu, możesz odpowiednio zmodyfikować strukturę podczas wstawiania elementu pola kombi lub przez zmodyfikowanie istniejącego elementu pola kombi.

Ustawianie obrazu dla nowego elementu

Jeśli wstawiasz nowy element, zainicjuj elementy iImage, iSelectedImage i iOverlay z odpowiednimi wartościami, a następnie wstaw element z wywołaniem elementu CComboBoxEx::InsertItem.

Poniższy przykład wstawia nowy rozszerzony element pola kombi (cbi) do rozszerzonej kontrolki pola kombi (m_comboEx), podając indeksy dla wszystkich trzech stanów obrazu:

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);

Ustawianie obrazu dla istniejącego elementu

Jeśli modyfikujesz istniejący element, musisz pracować z elementem członkowskim maskistruktury COMBOBOXEXITEM .

Aby zmodyfikować istniejący element do używania obrazów

  1. Zadeklaruj strukturę COMBOBOXEXITEM i ustaw element członkowski danych maski na wartości, które chcesz zmodyfikować.

  2. Korzystając z tej struktury, wykonaj wywołanie obiektu CComboBoxEx::GetItem.

  3. Zmodyfikuj maskę, iImage iSelectedImageelementy członkowskie nowo zwróconej struktury, używając odpowiednich wartości.

  4. Wywołaj metodę CComboBoxEx::SetItem, przekazując zmodyfikowaną strukturę.

W poniższym przykładzie pokazano tę procedurę, zamieniając zaznaczone i niezaznaczone obrazy trzeciego rozszerzonego pola kombi:

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));

Zobacz też

Korzystanie z CComboBoxEx
Kontrolki