Usar listas de imágenes con controles de encabezado
Los elementos de encabezado tienen la capacidad de mostrar una imagen dentro de un elemento de encabezado. Esta imagen, almacenada en una lista de imágenes asociada, es de 16 x 16 píxeles y tiene las mismas características que las imágenes de icono usadas en un control de vista de lista. Para implementar este comportamiento correctamente, primero debe crear e inicializar la lista de imágenes, asociar la lista con el control de encabezado y, a continuación, modificar los atributos del elemento de encabezado que mostrará la imagen.
En el procedimiento siguiente se muestran los detalles, usando un puntero a un control de encabezado (m_pHdrCtrl
) y un puntero a una lista de imágenes (m_pHdrImages
).
Mostrar una imagen en un elemento de encabezado
Construya una nueva lista de imágenes (o use un objeto de lista de imágenes existente) usando el constructor CImageList y almacenando el puntero resultante.
Inicialice el nuevo objeto de lista de imágenes llamando a CImageList::Create. El código siguiente es un ejemplo de esta llamada.
m_ListImageList.Create(16, 16, ILC_COLOR, 2, 2);
Agregue las imágenes de cada elemento de encabezado. El código siguiente agrega dos imágenes predefinidas.
m_ListImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1)); m_ListImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
Asocie la lista de imágenes con el control de encabezado con una llamada a CHeaderCtrl::SetImageList.
Modifique el elemento de encabezado para mostrar una imagen de la lista de imágenes asociada. En el ejemplo siguiente se asigna la primera imagen, de
m_phdrImages
, al primer elemento de encabezado,m_pHdrCtrl
.HDITEM curItem = {0}; pHeaderCtrl->SetImageList(&m_ListImageList); curItem.mask = HDI_TEXT | HDI_FORMAT | HDI_WIDTH | HDI_IMAGE; curItem.pszText = _T("Column 1"); curItem.cxy = 100; curItem.iImage = 0; curItem.fmt = HDF_LEFT | HDF_STRING | HDF_IMAGE; pHeaderCtrl->InsertItem(0, &curItem);
Para obtener información detallada sobre los valores de parámetro usados, consulte el CHeaderCtrl pertinente.
Nota:
Es posible tener varios controles con la misma lista de imágenes. Por ejemplo, en un control de vista de lista estándar, podría haber una lista de imágenes (de 16 x 16 píxeles) usada por la vista de icono pequeña de un control de vista de lista y los elementos de encabezado del control de vista de lista.