Compartir por


Clase CImageList

Proporciona la funcionalidad del control de lista de imágenes común de Windows.

Sintaxis

class CImageList : public CObject

Miembros

Constructores públicos

Nombre Descripción
CImageList::CImageList Construye un objeto CImageList.

Métodos públicos

Nombre Descripción
CImageList::Add Agrega una imagen o imágenes a una lista de imágenes.
CImageList::Attach Adjunta una lista de imágenes a un objeto CImageList.
CImageList::BeginDrag Comienza a arrastrar una imagen.
CImageList::Copy Copia una imagen dentro de un objeto CImageList.
CImageList::Create Inicializa una lista de imágenes y la adjunta a un objeto CImageList.
CImageList::DeleteImageList Elimina una lista de imágenes.
CImageList::DeleteTempMap Llamado por el controlador de tiempo de inactividad de CWinApp para eliminar cualquier objeto temporal CImageList creado por FromHandle.
CImageList::Detach Desasocia un objeto de lista de imágenes de un objeto CImageList y devuelve un manipulador de una lista de imágenes.
CImageList::DragEnter Bloquea las actualizaciones durante una operación de arrastre y muestra la imagen de arrastre en una posición especificada.
CImageList::DragLeave Desbloquea la ventana y oculta la imagen de arrastre para que la ventana se pueda actualizar.
CImageList::DragMove Mueve la imagen que se arrastra durante una operación de arrastrar y colocar.
CImageList::DragShowNolock Muestra u oculta la imagen de arrastre durante una operación de arrastre, sin bloquear la ventana.
CImageList::Draw Dibuja la imagen que se arrastra durante una operación de arrastrar y colocar.
CImageList::DrawEx Dibuja un elemento de lista de imágenes en el contexto de dispositivo especificado. La función usa el estilo de dibujo especificado y combina la imagen con el color especificado.
CImageList::DrawIndirect Dibuja una imagen de una lista de imágenes.
CImageList::EndDrag Finaliza una operación de arrastre.
CImageList::ExtractIcon Crea un icono basado en una imagen y una máscara en una lista de imágenes.
CImageList::FromHandle Devuelve un puntero a un objeto CImageList cuando se especifica un manipulador a una lista de imágenes. Si no hay un objeto CImageList asociado al identificador, se crea y asocia un objeto CImageList temporal.
CImageList::FromHandlePermanent Devuelve un puntero a un objeto CImageList cuando se especifica un manipulador a una lista de imágenes. Si no se ha asociado un objeto CImageList al manipulador, se devuelve NULL.
CImageList::GetBkColor Recupera el color de fondo actual de una lista de imágenes.
CImageList::GetDragImage Obtiene la lista de imágenes temporales que se usa para arrastrar.
CImageList::GetImageCount Recupera el número de imágenes de una lista de imágenes.
CImageList::GetImageInfo Recupera información sobre una imagen.
CImageList::GetSafeHandle Recupera m_hImageList.
CImageList::Read Lee una lista de imágenes de un archivo.
CImageList::Remove Quita una imagen de una lista de imágenes.
CImageList::Replace Reemplaza una imagen de una lista de imágenes por una nueva imagen.
CImageList::SetBkColor Establece el color de fondo de una lista de imágenes.
CImageList::SetDragCursorImage Crea una nueva imagen de arrastre.
CImageList::SetImageCount Restablece el recuento de imágenes de una lista de imágenes.
CImageList::SetOverlayImage Agrega el índice de base cero de una imagen a la lista de imágenes que se van a usar como máscaras de superposición.
CImageList::Write Escribe una lista de imágenes en un archivo.

Operadores públicos

Nombre Descripción
CImageList::operator HIMAGELIST Devuelve el objeto HIMAGELIST adjunto al objeto CImageList.

Miembros de datos públicos

Nombre Descripción
CImageList::m_hImageList Manipulador que contiene la lista de imágenes adjunta a este objeto.

Comentarios

Una "lista de imágenes" es una colección de imágenes del mismo tamaño, a las que puede hacer referencia mediante su índice de base cero. Las listas de imágenes se usan para administrar eficazmente grandes conjuntos de iconos o mapas de bits. Todas las imágenes de una lista de imágenes están contenidas en un único mapa de bits ancho en formato de dispositivo de pantalla. Una lista de imágenes también puede incluir un mapa de bits monocromo que contiene máscaras usadas para dibujar imágenes de forma transparente (estilo de icono). La interfaz de programación de aplicaciones (API) de Microsoft Win32 proporciona funciones de lista de imágenes que permiten dibujar imágenes, crear y destruir listas de imágenes, agregar y quitar imágenes, reemplazar imágenes, combinar imágenes y arrastrar imágenes.

Este control (y, por tanto, la clase CImageList) solo está disponible para los programas que se ejecutan en Windows 95/98 y Windows NT 3.51 y posteriores.

Para obtener más información sobre el uso de la clase CImageList, consulte Controles y Uso de CImageList.

Jerarquía de herencia

CObject

CImageList

Requisitos

Encabezado: afxcmn.h

CImageList::Add

Llame a esta función para agregar una o varias imágenes, o un icono, a una lista de imágenes.

int Add(
    CBitmap* pbmImage,
    CBitmap* pbmMask);

int Add(
    CBitmap* pbmImage,
    COLORREF crMask);

int Add(HICON hIcon);

Parámetros

pbmImage
Puntero al mapa de bits que contiene la imagen o las imágenes. El número de imágenes se deduce del ancho del mapa de bits.

pbmMask
Puntero al mapa de bits que contiene la máscara. Si no se usa ninguna máscara con la lista de imágenes, este parámetro se omite.

crMask
Color utilizado para generar la máscara. Cada píxel de este color del mapa de bits especificado se cambia a negro y el bit correspondiente de la máscara se establece en uno.

hIcon
Manipulador del icono que contiene el mapa de bits y la máscara de la nueva imagen.

Valor devuelto

Índice de base cero de la primera imagen nueva si se realiza correctamente; de lo contrario, -1.

Comentarios

Usted es responsable de liberar el manipulador del icono cuando haya terminado.

Ejemplo

// Add my icons.
m_myImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
m_myImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));

// Add my bitmap, make all black pixels transparent.
CBitmap bm;
bm.LoadBitmap(IDB_BITMAP1);
m_myImageList.Add(&bm, RGB(0, 0, 0));

CImageList::Attach

Llame a esta función para adjuntar una lista de imágenes a un objeto CImageList.

BOOL Attach(HIMAGELIST hImageList);

Parámetros

hImageList
Manipulador de un objeto de lista de imágenes.

Valor devuelto

Distinto de cero si la asociación se ha realizado correctamente; de lo contrario, 0.

Ejemplo

void AddQuestion(HIMAGELIST hmyImageList)
{
   CImageList imgList;

   // Attach the image list handle to the CImageList object.
   imgList.Attach(hmyImageList);

   // Add a new icon to the image list.
   imgList.Add(AfxGetApp()->LoadStandardIcon(IDI_QUESTION));

   // Detach the handle from the CImageList object.
   imgList.Detach();
}

CImageList::BeginDrag

Llame a esta función para empezar a arrastrar una imagen.

BOOL BeginDrag(
    int nImage,
    CPoint ptHotSpot);

Parámetros

nImage
Índice de base cero de la imagen que se va a arrastrar.

ptHotSpot
Coordenadas de la posición de arrastre inicial (normalmente, la posición del cursor). Las coordenadas son relativas a la esquina superior izquierda de la imagen.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Esta función crea una lista de imágenes temporales que se usa para arrastrar. La imagen combina la imagen especificada y su máscara con el cursor actual. En respuesta a los mensajes WM_MOUSEMOVE posteriores, puede mover la imagen de arrastre mediante la función miembro DragMove. Para finalizar la operación de arrastrar, puede usar la función miembro EndDrag.

Ejemplo

void CImageListDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
   // Initialize the drag image (usually called from WM_LBUTTONDOWN).
   m_myImageList.BeginDrag(0, CPoint(0, 0));
   m_myImageList.DragEnter(this, point);

   CDialog::OnLButtonDown(nFlags, point);
}

CImageList::CImageList

Construye un objeto CImageList.

CImageList();

CImageList::Copy

En esta función miembro, se implementa el comportamiento de la función ImageList_Copy de Win32, tal y como se describe en Windows SDK.

BOOL Copy(
    int iDst,
    int iSrc,
    UINT uFlags = ILCF_MOVE);

BOOL Copy(
    int iDst,
    CImageList* pSrc,
    int iSrc,
    UINT uFlags = ILCF_MOVE);

Parámetros

iDst
Índice de base cero de la imagen que se va a usar como destino de la operación de copia.

iSrc
Índice de base cero de la imagen que se va a usar como origen de la operación de copia.

uFlags
Valor de marca de bits que especifica el tipo de operación de copia que se va a realizar. Este parámetro puede establecerse con uno de los siguientes valores:

Valor Significado
ILCF_MOVE La imagen de origen se copia en el índice de la imagen de destino. Esta operación da como resultado varias instancias de una imagen especificada. ILCF_MOVE es el valor predeterminado.
ILCF_SWAP Las imágenes de origen y destino intercambian posiciones dentro de la lista de imágenes.

pSrc
Puntero a un objeto CImageList que es el destino de la operación de copia.

Valor devuelto

Es distinto de cero si es correcto. En caso contrario, es cero.

Ejemplo

CImageList myImageList2;
myImageList2.Create(32, 32, ILC_COLOR8, 0, 4);

// Copy the first image from myImageList2 and make it
// the first image of m_myImageList.
m_myImageList.Copy(0, &myImageList2, 0, ILCF_MOVE);

// Recopy the image to make it also the last image in m_myImageList.
m_myImageList.Copy(m_myImageList.GetImageCount() - 1, (int)0,
                   (UINT)ILCF_MOVE);

CImageList::Create

Inicializa una lista de imágenes y la adjunta a un objeto CImageList.

BOOL Create(
    int cx,
    int cy,
    UINT nFlags,
    int nInitial,
    int nGrow);

BOOL Create(
    UINT nBitmapID,
    int cx,
    int nGrow,
    COLORREF crMask);

BOOL Create(
    LPCTSTR lpszBitmapID,
    int cx,
    int nGrow,
    COLORREF crMask);

BOOL Create(
    CImageList& imagelist1,
    int nImage1,
    CImageList& imagelist2,
    int nImage2,
    int dx,
    int dy);

BOOL Create(CImageList* pImageList);

Parámetros

cx
Dimensiones de cada imagen, en píxeles.

cy
Dimensiones de cada imagen, en píxeles.

nFlags
Especifica el tipo de lista de imágenes que se va a crear. Este parámetro puede ser una combinación de los valores siguientes, pero solo puede incluir uno de los valores ILC_COLOR.

Valor Significado
ILC_COLOR Use el comportamiento predeterminado si no se especifica ninguna de las otras marcas ILC_COLOR*. Normalmente, el valor predeterminado es ILC_COLOR4; pero para los controladores de presentación más antiguos, el valor predeterminado es ILC_COLORDDB.
ILC_COLOR4 Use una sección de mapa de bits independiente del dispositivo (DIB) de 4 bits (16 colores) como mapa de bits de la lista de imágenes.
ILC_COLOR8 Use una sección de DIB de 8 bits. Los colores usados para la tabla de colores son los mismos que la paleta de tonos medios.
ILC_COLOR16 Use una sección de DIB de 16 bits (color de 32/64 k).
ILC_COLOR24 Use una sección de DIB de 24 bits.
ILC_COLOR32 Use una sección de DIB de 32 bits.
ILC_COLORDDB Use un mapa de bits dependiente del dispositivo.
ILC_MASK Usa una máscara. La lista de imágenes contiene dos mapas de bits, uno de los cuales es un mapa de bits monocromo que se usa como máscara. Si no se incluye este valor, la lista de imágenes contiene solo un mapa de bits. Consulte Dibujo de imágenes de una lista de imágenes para obtener información adicional sobre las imágenes con máscara.

nInitial
Número de imágenes que contiene inicialmente la lista de imágenes.

nGrow
Número de imágenes que puede crecer la lista de imágenes cuando el sistema tiene que cambiar el tamaño de la lista para dejar espacio para las nuevas imágenes. Este parámetro representa el número de imágenes nuevas que puede contener la lista de imágenes una vez cambiado el tamaño.

nBitmapID
Identificadores de recurso del mapa de bits que se van a asociar a la lista de imágenes.

crMask
Color utilizado para generar una máscara. Cada píxel de este color del mapa de bits especificado se cambia a negro y el bit correspondiente de la máscara se establece en uno.

lpszBitmapID
Cadena que contiene los identificadores de recurso de las imágenes.

imagelist1
Referencia a un objeto CImageList.

nImage1
Índice de la primera imagen existente.

imagelist2
Referencia a un objeto CImageList.

nImage2
Índice de la segunda imagen existente.

dx
Desplazamiento del eje X de la segunda imagen en relación con la primera imagen, en píxeles.

dy
Desplazamiento del eje Y de la segunda imagen en relación con la primera imagen, en píxeles.

pImageList
Puntero a un objeto CImageList .

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

El proceso de construcción de un elemento CImageList se divide en dos pasos. En primer lugar, llame al constructor y, luego, a Create, que crea la lista de imágenes y la asocia al objeto CImageList.

Ejemplo

m_myImageList.Create(32, 32, ILC_COLOR8, 0, 4);

CImageList::DeleteImageList

Llame a esta función para eliminar una lista de imágenes.

BOOL DeleteImageList();

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Ejemplo

// Delete the image list and verify.
myImageList2.DeleteImageList();
ASSERT(myImageList2.GetSafeHandle() == NULL);

CImageList::DeleteTempMap

Llamado automáticamente por el controlador de tiempo de inactividad de CWinApp, DeleteTempMap elimina los objetos CImageList temporales creados por FromHandle, pero no destruye ningún manipulador (hImageList) asociado temporalmente a los objetos ImageList.

static void PASCAL DeleteTempMap();

Ejemplo

// Note that this is a static member so an instantiated CImageList
// object is unnecessary.
CImageList::DeleteTempMap();

CImageList::Detach

Llame a esta función para desasociar un objeto de lista de imágenes de un objeto CImageList.

HIMAGELIST Detach();

Valor devuelto

Manipulador de un objeto de lista de imágenes.

Comentarios

Esta función devuelve un manipulador del objeto de lista de imágenes.

Ejemplo

Vea el ejemplo de CImageList::Attach.

CImageList::DragEnter

Durante una operación de arrastrar, bloquea las actualizaciones de la ventana especificada por pWndLock y muestra la imagen de arrastre en la posición especificada por point.

static BOOL PASCAL DragEnter(
    CWnd* pWndLock,
    CPoint point);

Parámetros

pWndLock
Puntero a la ventana que posee la imagen de arrastre.

point
Posición en la que se va a mostrar la imagen de arrastre. Las coordenadas son relativas a la esquina superior izquierda de la ventana (no al área cliente).

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Las coordenadas son relativas a la esquina superior izquierda de la ventana, por lo que debe compensar los anchos de los elementos de la ventana, como el borde, la barra de título y la barra de menús, al especificar las coordenadas.

Si pWndLock es NULL, esta función dibuja la imagen en el contexto de visualización asociado a la ventana del escritorio y las coordenadas son relativas a la esquina superior izquierda de la pantalla.

Esta función bloquea todas las demás actualizaciones de la ventana especificada durante la operación de arrastre. Si necesita realizar algún dibujo durante una operación de arrastre, como resaltar el destino de una operación de arrastrar y colocar, puede ocultar temporalmente la imagen arrastrada mediante la función CImageList::DragLeave.

Ejemplo

Vea el ejemplo de CImageList::BeginDrag.

CImageList::DragLeave

Desbloquea la ventana especificada por pWndLock y oculta la imagen de arrastre, lo que permite actualizar la ventana.

static BOOL PASCAL DragLeave(CWnd* pWndLock);

Parámetros

pWndLock
Puntero a la ventana que posee la imagen de arrastre.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Ejemplo

Vea el ejemplo de CImageList::EndDrag.

CImageList::DragMove

Llame a esta función para mover la imagen que se está arrastrando durante una operación de arrastrar y colocar.

static BOOL PASCAL DragMove(CPoint pt);

Parámetros

pt
Nueva posición de arrastre.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Normalmente, se llama a esta función en respuesta a un mensaje WM_MOUSEMOVE. Para iniciar una operación de arrastre, use la función miembro BeginDrag.

Ejemplo

void CImageListDlg::OnMouseMove(UINT nFlags, CPoint point)
{
   m_myImageList.DragMove(point);

   CDialog::OnMouseMove(nFlags, point);
}

CImageList::DragShowNolock

Muestra u oculta la imagen de arrastre durante una operación de arrastre, sin bloquear la ventana.

static BOOL PASCAL DragShowNolock(BOOL bShow);

Parámetros

bShow
Especifica si se va a mostrar la imagen de arrastre.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

La función CImageList::DragEnter bloquea todas las actualizaciones de la ventana durante una operación de arrastrar. Sin embargo, esta función no bloquea la ventana.

CImageList::Draw

Llame a esta función para mover la imagen que se está arrastrando durante una operación de arrastrar y colocar.

BOOL Draw(
    CDC* pDC,
    int nImage,
    POINT pt,
    UINT nStyle);

Parámetros

pDC
Puntero al contexto del dispositivo de destino.

nImage
Índice de base cero de la imagen que se va a dibujar.

pt
Ubicación en la que se va a dibujar dentro del contexto de dispositivo especificado.

nStyle
Marca que especifica el estilo de dibujo. Puede ser uno o varios de estos valores:

Valor Significado
ILD_BLEND25, ILD_FOCUS Dibuja la imagen, mezclando el 25 por ciento con el color de resaltado del sistema. Este valor no tiene ningún efecto si la lista de imágenes no contiene una máscara.
ILD_BLEND50, ILD_SELECTED, ILD_BLEND Dibuja la imagen, mezclando el 50 por ciento con el color de resaltado del sistema. Este valor no tiene ningún efecto si la lista de imágenes no contiene una máscara.
ILD_MASK Dibuja la máscara.
ILD_NORMAL Dibuja la imagen con el color de fondo de la lista de imágenes. Si el color de fondo es el valor CLR_NONE, la imagen se dibuja de forma transparente mediante la máscara.
ILD_TRANSPARENT Dibuja la imagen de forma transparente mediante la máscara, independientemente del color de fondo.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Ejemplo

Vea el ejemplo de CImageList::SetOverlayImage.

CImageList::DrawEx

Dibuja un elemento de lista de imágenes en el contexto de dispositivo especificado.

BOOL DrawEx(
    CDC* pDC,
    int nImage,
    POINT pt,
    SIZE sz,
    COLORREF clrBk,
    COLORREF clrFg,
    UINT nStyle);

Parámetros

pDC
Puntero al contexto del dispositivo de destino.

nImage
Índice de base cero de la imagen que se va a dibujar.

pt
Ubicación en la que se va a dibujar dentro del contexto de dispositivo especificado.

sz
Tamaño de la parte de la imagen que se va a dibujar en relación con la esquina superior izquierda de la imagen. Consulte dx y dy en ImageList_DrawEx en Windows SDK.

clrBk
Color de fondo de la imagen. Consulte rgbBk en ImageList_DrawEx de Windows SDK.

clrFg
Color de primer plano de la imagen. Consulte rgbFg en ImageList_DrawEx de Windows SDK.

nStyle
Marca que especifica el estilo de dibujo. Consulte fStyle en ImageList_DrawEx de Windows SDK.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

La función usa el estilo de dibujo especificado y combina la imagen con el color especificado.

Ejemplo

m_myImageList.DrawEx(&dc, 0, CPoint(0, 0), CSize(16, 16), CLR_DEFAULT,
                     CLR_DEFAULT, ILD_IMAGE);

CImageList::DrawIndirect

Llame a esta función miembro para dibujar una imagen de una lista de imágenes.

BOOL DrawIndirect(IMAGELISTDRAWPARAMS* pimldp);

BOOL DrawIndirect(
    CDC* pDC,
    int nImage,
    POINT pt,
    SIZE sz,
    POINT ptOrigin,
    UINT fStyle = ILD_NORMAL,
    DWORD dwRop = SRCCOPY,
    COLORREF rgbBack = CLR_DEFAULT,
    COLORREF rgbFore = CLR_DEFAULT,
    DWORD fState = ILS_NORMAL,
    DWORD Frame = 0,
    COLORREF crEffect = CLR_DEFAULT);

Parámetros

pimldp
Puntero a una estructura IMAGELISTDRAWPARAMS que contiene información sobre la operación de dibujo.

pDC
Puntero al contexto del dispositivo de destino. Debe eliminar este objeto CDC cuando haya terminado con él.

nImage
Índice de base cero de la imagen que se va a dibujar.

pt
Estructura POINT que contiene las coordenadas X e Y en las que se dibujará la imagen.

sz
Estructura SIZE que indica el tamaño de la imagen que se va a dibujar.

ptOrigin
Estructura POINT que contiene las coordenadas X e Y que especifican la esquina superior izquierda de la operación de dibujo con respecto a la propia imagen. Los píxeles de la imagen que se encuentran a la izquierda de la coordenada X y por encima de la coordenada Y no se dibujan.

fStyle
Marca que especifica el estilo de dibujo y, opcionalmente, la imagen de superposición. Para obtener información sobre la imagen de superposición, consulte la sección Comentarios. La implementación predeterminada de MFC, ILD_NORMAL, dibuja la imagen con el color de fondo de la lista de imágenes. Si el color de fondo es el valor CLR_NONE, la imagen se dibuja de forma transparente mediante una máscara.

Otros estilos posibles se describen en el miembro fStyle de la estructura IMAGELISTDRAWPARAMS.

dwRop
Valor que especifica un código de operación de trama. Estos códigos definen cómo se combinarán los datos de color del rectángulo de origen con los datos de color del rectángulo de destino para lograr el color final. La implementación predeterminada de MFC, SRCCOPY, copia el rectángulo de origen directamente en el rectángulo de destino. Este parámetro se omite si el parámetro fStyle no incluye la marca ILD_ROP.

Otros valores posibles se describen en el miembro dwRop de la estructura IMAGELISTDRAWPARAMS.

rgbBack
Color de fondo de la imagen, de forma predeterminada, CLR_DEFAULT. Este parámetro puede ser un valor RGB definido por la aplicación o uno de los valores siguientes:

Valor Significado
CLR_DEFAULT Color de fondo predeterminado. La imagen se dibuja con el color de fondo de la lista de imágenes.
CLR_NONE Ningún color de fondo. La imagen se dibuja de forma transparente.

rgbFore
Color de primer plano de la imagen, de forma predeterminada, CLR_DEFAULT. Este parámetro puede ser un valor RGB definido por la aplicación o uno de los valores siguientes:

Valor Significado
CLR_DEFAULT Color de primer plano predeterminado. La imagen se dibuja con el color de resaltado del sistema como color de primer plano.
CLR_NONE Ningún color de mezcla. La imagen se combina con el color del contexto del dispositivo de destino.

Este parámetro solo se usa si fStyle incluye la marca ILD_BLEND25 o ILD_BLEND50.

fState
Marca que especifica el estado del dibujo. Este miembro puede contener una o varias marcas de estado de la lista de imágenes.

Frame
Afecta al comportamiento de los efectos de saturación y de combinación alfa.

Cuando se usa con ILS_SATURATE, este miembro contiene el valor que se agrega a cada componente de color de la terna RGB para cada píxel del icono.

Cuando se usa con ILS_APLHA, este miembro contiene el valor del canal alfa. Este valor puede ir de 0 a 255, donde 0 es completamente transparente y 255 es completamente opaco.

crEffect
Valor COLORREF utilizado para efectos de brillo y sombra.

Valor devuelto

TRUE si la imagen se dibuja correctamente; de lo contrario, FALSE.

Comentarios

Use la primera versión si quiere rellenar la estructura de Win32 usted mismo. Use la segunda versión si desea aprovechar uno o varios de los argumentos predeterminados de MFC, o evitar administrar la estructura.

Una imagen de superposición es una imagen que se dibuja encima de la imagen principal, especificada en esta función miembro por el parámetro nImage. Dibuje una máscara de superposición mediante la función miembro Draw con el índice de base uno de la máscara de superposición especificada mediante la macro INDEXTOOVERLAYMASK.

Ejemplo

int i, dx, cx, cy, nCount = m_myImageList.GetImageCount();

::ImageList_GetIconSize(m_myImageList, &cx, &cy);

// Draw the images of the image list on the DC.
for (dx = 0, i = 0; i < nCount; i++)
{
   m_myImageList.DrawIndirect(&dc, i, CPoint(dx, 0),
                              CSize(cx, cy), CPoint(0, 0));
   dx += cx;
}

CImageList::EndDrag

Llame a esta función para finalizar una operación de arrastre.

static void PASCAL EndDrag();

Comentarios

Para iniciar una operación de arrastre, use la función miembro BeginDrag.

Ejemplo

void CImageListDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
   // Terminate the drag image (usually called from WM_LBUTTONUP).
   m_myImageList.DragLeave(this);
   m_myImageList.EndDrag();

   CDialog::OnLButtonUp(nFlags, point);
}

CImageList::ExtractIcon

Llame a esta función para crear un icono basado en una imagen y su máscara relacionada de una lista de imágenes.

HICON ExtractIcon(int nImage);

Parámetros

nImage
Índice de base cero de la imagen.

Valor devuelto

Manipulador del icono si se realiza correctamente; de lo contrario, NULL.

Comentarios

Este método se basa en el comportamiento de la macro ImageList_ExtractIcon para crear el icono. Consulte la macro ImageList_ExtractIcon para obtener más información sobre la creación y limpieza de iconos.

Ejemplo

int i, dx, cx, cy, nCount = m_myImageList.GetImageCount();
HICON hIcon;

::ImageList_GetIconSize(m_myImageList, &cx, &cy);

// Draw the images of the image list on the DC.
for (dx = 0, i = 0; i < nCount; i++)
{
   hIcon = m_myImageList.ExtractIcon(i);

   dc.DrawIcon(dx, 0, hIcon);
   dx += cx;
}

CImageList::FromHandle

Devuelve un puntero a un objeto CImageList cuando se especifica un manipulador a una lista de imágenes.

static CImageList* PASCAL FromHandle(HIMAGELIST hImageList);

Parámetros

hImageList
Especifica la lista de imágenes.

Valor devuelto

Un puntero a un objeto CImageList si se realiza correctamente; de lo contrario, NULL.

Comentarios

Si no hay un elemento CImageList ya asociado al manipulador, se crea y asocia un objeto CImageList temporal. Este objeto CImageList temporal solo es válido hasta la próxima vez que la aplicación tenga tiempo de inactividad en su bucle de eventos, momento en el que se eliminan todos los objetos temporales.

Ejemplo

CImageList *ConvertHandle(HIMAGELIST hmyImageList)
{
   // Convert the HIMAGELIST to a CImageList*.
   ASSERT(hmyImageList != NULL);
   CImageList *pmyImageList = CImageList::FromHandle(hmyImageList);
   ASSERT(pmyImageList != NULL);

   return pmyImageList;
}

CImageList::FromHandlePermanent

Devuelve un puntero a un objeto CImageList cuando se especifica un manipulador a una lista de imágenes.

static CImageList* PASCAL FromHandlePermanent(HIMAGELIST hImageList);

Parámetros

hImageList
Especifica la lista de imágenes.

Valor devuelto

Un puntero a un objeto CImageList si se realiza correctamente; de lo contrario, NULL.

Comentarios

Si no se ha asociado un objeto CImageList al manipulador, se devuelve NULL.

Ejemplo

CImageList *ConvertHandlePermanent(HIMAGELIST hmyImageList)
{
   // Convert the HIMAGELIST to a CImageList*.
   ASSERT(hmyImageList != NULL);
   CImageList *pmyImageList = CImageList::FromHandlePermanent(hmyImageList);
   ASSERT(pmyImageList != NULL);

   return pmyImageList;
}

CImageList::GetBkColor

Llame a esta función para recuperar el color de fondo actual de una lista de imágenes.

COLORREF GetBkColor() const;

Valor devuelto

Valor de color RGB del color de fondo del objeto CImageList.

Ejemplo

Vea el ejemplo de CImageList::SetBkColor.

CImageList::GetDragImage

Obtiene la lista de imágenes temporales que se usa para arrastrar.

static CImageList* PASCAL GetDragImage(
    LPPOINT lpPoint,
    LPPOINT lpPointHotSpot);

Parámetros

lpPoint
Dirección de una estructura POINT que recibe la posición de arrastre actual.

lpPointHotSpot
Dirección de una estructura POINT que recibe el desplazamiento de la imagen de arrastre en relación con la posición de arrastre.

Valor devuelto

Si se ejecuta correctamente, un puntero a la lista de imágenes temporales que se usa para arrastrar; de lo contrario, NULL.

CImageList::GetImageCount

Llame a esta función para recuperar el número de imágenes de una lista de imágenes.

int GetImageCount() const;

Valor devuelto

Número de imágenes.

Ejemplo

Vea el ejemplo de CImageList::ExtractIcon.

CImageList::GetImageInfo

Llame a esta función para recuperar información sobre una imagen.

BOOL GetImageInfo(
    int nImage,
    IMAGEINFO* pImageInfo) const;

Parámetros

nImage
Índice de base cero de la imagen.

pImageInfo
Puntero a una estructura IMAGEINFO que recibe la información sobre la imagen. La información de esta estructura se puede usar para manipular directamente los mapas de bits de la imagen.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

La estructura IMAGEINFO contiene información sobre una imagen de una lista de imágenes.

CImageList::GetSafeHandle

Llame a esta función para recuperar el miembro de datos m_hImageList.

HIMAGELIST GetSafeHandle() const;

Valor devuelto

Manipulador de la lista de imágenes asociada; de lo contrario, NULL si no hay ningún objeto adjunto.

Ejemplo

// Get the safe handle to the image list.
HIMAGELIST hImageList = m_myImageList.GetSafeHandle();

CImageList::m_hImageList

Manipulador de la lista de imágenes adjunta a este objeto.

HIMAGELIST m_hImageList;

Comentarios

El miembro de datos m_hImageList es una variable pública de tipo HIMAGELIST.

Ejemplo

// Get the safe handle to the image list.
HIMAGELIST hImageList = m_myImageList.m_hImageList;

CImageList::operator HIMAGELIST

Use este operador para obtener el manipulador asociado al objeto CImageList.

operator HIMAGELIST() const;

Valor devuelto

Si se ejecuta correctamente, un manipulador de la lista de imágenes representada por el objeto CImageList; de lo contrario, NULL.

Comentarios

Este operador es un operador de conversión que admite el uso directo de un objeto HIMAGELIST.

Ejemplo

// Get the safe handle to the image list.
HIMAGELIST hImageList = m_myImageList;

CImageList::Read

Llame a esta función para leer una lista de imágenes de un archivo.

BOOL Read(CArchive* pArchive);

Parámetros

pArchive
Puntero a un objeto CArchive desde el que se va a leer la lista de imágenes.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Ejemplo

// Open the archive to load the image list from.
CFile myFile(_T("myfile.data"), CFile::modeRead);
CArchive ar(&myFile, CArchive::load);
CImageList myImgList;

// Load the image list from the archive.
myImgList.Read(&ar);

CImageList::Remove

Llame a esta función para quitar una imagen de un objeto de lista de imágenes.

BOOL Remove(int nImage);

Parámetros

nImage
Índice de base cero de la imagen que se va a quitar.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Todos los elementos siguientes a nImage ahora bajan una posición. Por ejemplo, si una lista de imágenes contiene dos elementos, la eliminación del primer elemento hará que el elemento restante esté ahora en la primera posición. nImage=0 para el elemento en la primera posición.

Ejemplo

// Remove every other image from the image list.
for (int i = 0; i < m_myImageList.GetImageCount(); i++)
{
   m_myImageList.Remove(i);
}

CImageList::Replace

Llame a esta función para reemplazar una imagen de una lista de imágenes por una nueva imagen.

BOOL Replace(
    int nImage,
    CBitmap* pbmImage,
    CBitmap* pbmMask);

int Replace(
    int nImage,
    HICON hIcon);

Parámetros

nImage
Índice de base cero de la imagen que se va a reemplazar.

pbmImage
Puntero al mapa de bits que contiene la imagen.

pbmMask
Puntero al mapa de bits que contiene la máscara. Si no se usa ninguna máscara con la lista de imágenes, este parámetro se omite.

hIcon
Manipulador del icono que contiene el mapa de bits y la máscara de la nueva imagen.

Valor devuelto

La versión que devuelve BOOL devuelve un valor distinto de cero si se ejecuta correctamente; de lo contrario, devuelve 0.

La versión que devuelve int devuelve el índice de base cero de la imagen si se ejecuta correctamente; de lo contrario, devuelve -1.

Comentarios

Llame a esta función miembro después de llamar a SetImageCount para asignar las imágenes nuevas y válidas a los números de índice de imagen de marcador de posición.

Ejemplo

Vea el ejemplo de CImageList::SetImageCount.

CImageList::SetBkColor

Llame a esta función para establecer el color de fondo de una lista de imágenes.

COLORREF SetBkColor(COLORREF cr);

Parámetros

cr
Color de fondo que se va a establecer. Puede ser CLR_NONE. En ese caso, las imágenes se dibujan de forma transparente mediante la máscara.

Valor devuelto

Color de fondo anterior si se ejecuta correctamente; de lo contrario, CLR_NONE.

Ejemplo

// Set the background color to white.
m_myImageList.SetBkColor(RGB(255, 255, 255));
ASSERT(m_myImageList.GetBkColor() == RGB(255, 255, 255));

CImageList::SetDragCursorImage

Crea una nueva imagen de arrastre combinando la imagen dada (normalmente, una imagen de cursor del mouse) con la imagen de arrastre actual.

BOOL SetDragCursorImage(
    int nDrag,
    CPoint ptHotSpot);

Parámetros

nDrag
Índice de la nueva imagen que se va a combinar con la imagen de arrastre.

ptHotSpot
Posición de la zona activa dentro de la nueva imagen.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Dado que las funciones de arrastre usan la nueva imagen durante una operación de arrastre, debe usar la función de Windows ShowCursor para ocultar el cursor del mouse real después de llamar a CImageList::SetDragCursorImage. De lo contrario, el sistema puede parecer tener dos cursores del mouse mientras dure la operación de arrastre.

CImageList::SetImageCount

Llame a esta función miembro para restablecer el número de imágenes de un objeto CImageList.

BOOL SetImageCount(UINT uNewCount);

Parámetros

uNewCount
Valor que especifica el nuevo número total de imágenes de la lista de imágenes.

Valor devuelto

Es distinto de cero si es correcto. En caso contrario, es cero.

Comentarios

Si llama a esta función miembro para aumentar el número de imágenes de la lista de imágenes, llame a Replace para cada imagen adicional para asignar los nuevos índices a imágenes válidas. Si no puede asignar los índices a imágenes válidas, las operaciones de dibujo que crean las nuevas imágenes serán impredecibles.

Si reduce el tamaño de una lista de imágenes mediante esta función, se liberan las imágenes truncadas.

Ejemplo

// Set the image count of the image list to be 10 with
// all images being the system question mark icon.
m_myImageList.SetImageCount(10);
HICON hIcon = AfxGetApp()->LoadStandardIcon(IDI_QUESTION);

for (int i = 0; i < 10; i++)
{
   m_myImageList.Replace(i, hIcon);
}

CImageList::SetOverlayImage

Llame a esta función para agregar el índice de base cero de una imagen a la lista de imágenes que se van a usar como máscaras de superposición.

BOOL SetOverlayImage(
    int nImage,
    int nOverlay);

Parámetros

nImage
Índice de base cero de la imagen que se va a usar como máscara de superposición.

nOverlay
Índice de base uno de la máscara de superposición.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Se pueden agregar hasta cuatro índices a la lista.

Una máscara de superposición es una imagen dibujada de forma transparente sobre otra imagen. Dibuje una máscara de superposición sobre una imagen mediante la función miembro CImageList::Draw con el índice de base uno de la máscara de superposición especificada mediante la macro INDEXTOOVERLAYMASK.

Ejemplo

// Add a new image to the image list.
int nIndex = m_myImageList.Add(AfxGetApp()->LoadStandardIcon(IDI_QUESTION));

if (nIndex != -1)
{
   // Make the new image an overlay image.
   m_myImageList.SetOverlayImage(nIndex, 1);

   // Draw the first image in the image list with an overlay image.
   m_myImageList.Draw(&dc, 0, CPoint(0, 0), INDEXTOOVERLAYMASK(1));
}

CImageList::Write

Llame a esta función para escribir un objeto de lista de imágenes en un archivo.

BOOL Write(CArchive* pArchive);

Parámetros

pArchive
Puntero a un objeto CArchive en el que se va a almacenar la lista de imágenes.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Ejemplo

// Open the archive to store the image list in.
CFile myFile(_T("myfile.data"), CFile::modeCreate | CFile::modeWrite);
CArchive ar(&myFile, CArchive::store);

// Store the image list in the archive.
m_myImageList.Write(&ar);

Vea también

CObject (clase)
Gráfico de jerarquías
CListCtrl (clase)
CTabCtrl (clase)