Guide pratique pour ajouter des listes d’images List-View
Cette rubrique montre comment ajouter des listes d’images à un contrôle d’affichage de liste.
Vous créez uniquement les listes d’images que le contrôle utilise. Par exemple, si votre application n’autorise pas l’utilisateur à basculer vers l’affichage icône, vous n’avez pas besoin de créer et d’affecter une grande liste d’icônes. Si vous créez des listes d’images volumineuses et petites, elles doivent contenir les mêmes images dans le même ordre, car une seule valeur est utilisée pour identifier l’icône d’un élément d’affichage de liste dans les deux listes d’images.
Bon à savoir
Technologies
Prérequis
- C/C++
- Programmation de l’interface utilisateur Windows
Instructions
Pour afficher des images d’élément, vous devez affecter une liste d’images au contrôle d’affichage de liste. Pour ce faire, utilisez le message LVM_SETIMAGELIST ou la macro ListView_SetImageList correspondante, en spécifiant si la liste d’images contient des icônes complètes, des petites icônes ou des images d’état. Pour récupérer le handle dans une liste d’images actuellement affectée à un contrôle d’affichage de liste, utilisez le message LVM_GETIMAGELIST . Vous pouvez utiliser la fonction GetSystemMetrics pour déterminer les dimensions appropriées pour les icônes de taille réelle et de petite taille.
Dans l’exemple de code C++ suivant, la fonction définie par l’application crée d’abord des listes d’images, puis les affecte à un contrôle d’affichage de liste.
// 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;
}
Rubriques connexes