Partilhar via


Definindo as imagens para um item individual

Os diferentes tipos de imagens usados pelo item de caixa de combinação estendido são determinados pelos valores nos membros iImage, iSelectedImage e iOverlay da estrutura COMBOBOXEXITEM. Cada valor é o índice de uma imagem na lista de imagens associada do controle. Por padrão, esses membros são definidos como 0, fazendo com que o controle não exiba nenhuma imagem para o item. Se você quiser usar imagens para um item específico, poderá modificar a estrutura apropriadamente inserindo o item da caixa de combinação ou modificando um item de caixa de combinação existente.

Definir a imagem de um novo item

Se você estiver inserindo um novo item, inicialize os membros das estruturas iImage, iSelectedImage e iOverlay com os valores apropriados e então insira o item com uma chamada para CComboBoxEx::InsertItem.

O exemplo a seguir insere um novo item de caixa de combinação estendido (cbi) no controle de caixa de combinação estendido (m_comboEx), fornecendo índices para os três estados de imagem:

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

Definindo a imagem para um item existente

Se estiver modificando um item existente, você precisará trabalhar com o membro de máscara de uma estrutura COMBOBOXEXITEM.

Para modificar um item existente para usar imagens

  1. Declare uma estrutura COMBOBOXEXITEM e defina o membro de dados de máscara para os valores que você está interessado em modificar.

  2. Usando essa estrutura, faça uma chamada para CComboBoxEx::GetItem.

  3. Modifique os membros máscara, iImage e iSelectedImage da estrutura recém-retornada usando os valores apropriados.

  4. Faça uma chamada para CComboBoxEx::SetItem passando a estrutura modificada.

O exemplo a seguir demonstra esse procedimento trocando as imagens selecionadas e não selecionadas do terceiro item da caixa de combinação estendida:

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

Confira também

Usando CComboBoxEx
Controles