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
Declare uma estrutura de COMBOBOXEXITEM e define o membro de dados de mask aos valores que você está interessado na alteração.
Usando essa estrutura, chame um a CComboBoxEx::GetItem.
Modifique mask, iImage, e membros de iSelectedImage da estrutura recentemente retornada, usando os valores apropriados.
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));