Compartir por


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

  1. Declare una estructura COMBOBOXEXITEM y establezca el miembro de datos mask en los valores que le interese modificar.

  2. Con esta estructura, realice una llamada a CComboBoxEx::GetItem.

  3. Modifique los miembros mask, iImage e iSelectedImage de la estructura recién devuelta, por medio de los valores adecuados.

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

Consulte también

Uso de CComboBoxEx
Controles