Поделиться через


Установка изображений для отдельного элемента

Различные типы изображений, используемых расширенным элементом поля со списком, определяются значениями в структуре iImage, iSelectedImage и iOverlayструктуры CO МБ OBOXEXITEM. Каждое значение — это индекс изображения в связанном списке изображений элемента управления. По умолчанию эти элементы имеют значение 0, что приводит к тому, что элемент управления не отображает изображение элемента. Если вы хотите использовать изображения для определенного элемента, можно изменить структуру соответствующим образом при вставке элемента поля со списком или путем изменения существующего элемента поля со списком.

Настройка изображения для нового элемента

При вставке нового элемента инициализируйте элементы структуры iImage, iSelectedImage и iOverlay с соответствующими значениями, а затем вставьте элемент с вызовом CComboBoxEx::InsertItem.

В следующем примере вставляется новый расширенный элемент поля со списком () в расширенный элемент управления со списком (cbim_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);

Настройка образа для существующего элемента

При изменении существующего элемента необходимо работать с элементом маски структуры CO МБ OBOXEXITEM.

Изменение существующего элемента для использования изображений

  1. Объявите структуру CO МБ OBOXEXITEM и задайте элемент данных маски значениям, которые вы хотите изменить.

  2. Используя эту структуру, вызовите CComboBoxEx::GetItem.

  3. Измените элементы маски, iImage и iSelectedImage новой возвращаемой структуры с помощью соответствующих значений.

  4. Вызов 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));

См. также

Использование CComboBoxEx
Controls