Configurar las imágenes para un elemento individual
Los distintos tipos de imágenes utilizadas por el elemento de cuadro combinado extendido se determinan según los valores de los miembros iImage, iSelectedImage e iOverlay de la estructura COMBOBOXEXITEM. Cada valor es el índice de una imagen en la lista de imágenes asociada del control. De forma predeterminada, estos miembros se establecen en 0, lo que ocasiona que el control no muestre ninguna imagen para el elemento. Si desea usar imágenes para un elemento específico, puede modificar la estructura en consecuencia, ya sea al insertar el elemento de cuadro combinado o modificar un elemento de cuadro combinado existente.
Establecer la imagen para un nuevo elemento
Si va a insertar un nuevo elemento, inicialice los miembros de la estructura iImage, iSelectedImage e iOverlay con los valores adecuados y, a continuación, inserte el elemento con una llamada a CComboBoxEx::InsertItem.
En el ejemplo siguiente se inserta un nuevo elemento de cuadro combinado extendido (cbi
) en el control de cuadro combinado extendido (m_comboEx
), lo que proporciona índices para los tres estados de imagen:
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);
Establecer la imagen de un elemento existente
Si va a modificar un elemento existente, debe trabajar con el miembro mask de una estructura COMBOBOXEXITEM.
Para modificar un elemento existente para usar imágenes
Declare una estructura COMBOBOXEXITEM y establezca el miembro de datos mask en los valores que le interese modificar.
Con esta estructura, realice una llamada a CComboBoxEx::GetItem.
Modifique los miembros mask, iImage e iSelectedImage de la estructura recién devuelta, por medio de los valores adecuados.
Realice una llamada a CComboBoxEx::SetItem y pase la estructura modificada.
En el ejemplo siguiente se demuestra este procedimiento al intercambiar las imágenes seleccionadas y no seleccionadas del tercer elemento del cuadro combinado extendido:
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));