Compartir a través de


Cómo agregar listas de imágenes de List-View

En este tema se muestra cómo agregar listas de imágenes a un control de vista de lista.

Solo se crean las listas de imágenes que usa el control. Por ejemplo, si la aplicación no permite al usuario cambiar a la vista de iconos, no es necesario crear ni asignar una lista de iconos grande. Si crea listas de imágenes grandes y pequeñas, deben contener las mismas imágenes en el mismo orden, ya que se usa un único valor para identificar el icono de un elemento de vista de lista en ambas listas de imágenes.

Lo que necesita saber

Tecnologías

Requisitos previos

  • C/C++
  • Programación de la interfaz de usuario de Windows

Instrucciones

Para mostrar imágenes de elementos, debe asignar una lista de imágenes al control de vista de lista. Para ello, use el mensaje LVM_SETIMAGELIST o la macro correspondiente ListView_SetImageList, especificando si la lista de imágenes contiene iconos de tamaño completo, iconos pequeños o imágenes de estado. Para recuperar el identificador de una lista de imágenes que está asignada actualmente a un control de vista de lista, use el mensaje LVM_GETIMAGELIST . Puede usar la función GetSystemMetrics para determinar las dimensiones adecuadas para los iconos de tamaño completo y pequeños.

En el siguiente ejemplo de código de C++, la función definida por la aplicación crea primero listas de imágenes y, a continuación, las asigna a un control de vista de lista.

// InitListViewImageLists: Creates image lists for a list-view control.
// This function only creates image lists. It does not insert the items into
// the control, which is necessary for the control to be visible.   
//
// Returns TRUE if successful, or FALSE otherwise. 
//
// hWndListView: Handle to the list-view control. 
// global variable g_hInst: The handle to the module of either a 
// dynamic-link library (DLL) or executable (.exe) that contains
// the image to be loaded. If loading a standard or system
// icon, set g_hInst to NULL.
//
BOOL InitListViewImageLists(HWND hWndListView) 
{ 
    HICON hiconItem;     // Icon for list-view items.
    HIMAGELIST hLarge;   // Image list for icon view.
    HIMAGELIST hSmall;   // Image list for other views.

    // Create the full-sized icon image lists. 
    hLarge = ImageList_Create(GetSystemMetrics(SM_CXICON), 
                              GetSystemMetrics(SM_CYICON), 
                              ILC_MASK, 1, 1); 

    hSmall = ImageList_Create(GetSystemMetrics(SM_CXSMICON), 
                              GetSystemMetrics(SM_CYSMICON), 
                              ILC_MASK, 1, 1); 
    
    // Add an icon to each image list.  
    hiconItem = LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_ITEM));

    ImageList_AddIcon(hLarge, hiconItem);
    ImageList_AddIcon(hSmall, hiconItem);

    DestroyIcon(hiconItem);
 
// When you are dealing with multiple icons, you can use the previous four lines of 
// code inside a loop. The following code shows such a loop. The 
// icons are defined in the application's header file as resources, which 
// are numbered consecutively starting with IDS_FIRSTICON. The number of 
// icons is defined in the header file as C_ICONS.
/*    
    for(index = 0; index < C_ICONS; index++)
    {
        hIconItem = LoadIcon (g_hinst, MAKEINTRESOURCE(IDS_FIRSTICON + index));
        ImageList_AddIcon(hSmall, hIconItem);
        ImageList_AddIcon(hLarge, hIconItem);
        Destroy(hIconItem);
    }
*/
    
    // Assign the image lists to the list-view control. 
    ListView_SetImageList(hWndListView, hLarge, LVSIL_NORMAL); 
    ListView_SetImageList(hWndListView, hSmall, LVSIL_SMALL); 
    
    return TRUE; 
}

Referencia de control de vista de lista

Acerca de los controles de List-View

Uso de controles de List-View