Partilhar via


Definindo as imagens para um item individual

Os tipos diferentes de imagens usadas pelo item estendido da caixa de combinação são determinados pelos valores em iImage, em iSelectedImage, e em membros de iOverlay da estrutura de COMBOBOXEXITEM . Cada valor é o índice de uma imagem associado na lista da imagem do controle. Por padrão, esses membros são definidos como 0, fazendo com que o controle não exibe nenhuma imagem para o item. Se você quiser usar imagens para um item específico, você pode alterar a estrutura dessa forma, qualquer uma ao inserir o item da caixa de combinação ou alterando um item existente na caixa de combinação.

Definindo a imagem para um novo item

Se você estiver inserindo um novo item, inicializar iImage, iSelectedImage, e membros da estrutura de iOverlay com os valores apropriados e insira o item com uma chamada a CComboBoxEx::InsertItem.

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

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 você estiver alterando um item existente, você precisar trabalhar com o membro de mask de uma estrutura de COMBOBOXEXITEM .

Para alterar um item existente para usar imagens

  1. Declare uma estrutura de COMBOBOXEXITEM e define o membro de dados de mask aos valores que você está interessado na alteração.

  2. Usando essa estrutura, chame um a CComboBoxEx::GetItem.

  3. Modifique mask, iImage, e membros de iSelectedImage da estrutura recentemente retornada, usando os valores apropriados.

  4. Chame um a CComboBoxEx::SetItem, passando na estrutura alterada.

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

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

Consulte também

Referência

Usando CComboBoxEx

Conceitos

Controles (MFC)