Добавление списков изображений представления списка
В этом разделе показано, как добавить списки изображений в элемент управления представлением списка.
Вы создаете только списки изображений, которые использует элемент управления. Например, если приложение не позволяет пользователю переключаться на представление значков, вам не нужно создавать и назначать большой список значков. Если вы создаете как большие, так и небольшие списки изображений, они должны содержать одинаковые изображения в одном порядке, так как одно значение используется для идентификации значка элемента представления списка в обоих списках изображений.
Это важно знать
Технологии
Необходимые компоненты
- C/C++
- Программирование пользовательского интерфейса Windows
Instructions
Чтобы отобразить изображения элементов, необходимо назначить список изображений элементу управления "Представление списка". Для этого используйте сообщение LVM_SETIMAGELIST или соответствующий макрос ListView_SetImageList, указав, содержит ли список изображений полноразмерные значки, небольшие значки или изображения состояния. Чтобы получить дескриптор списка изображений, который в настоящее время назначен элементу управления представлением списка, используйте сообщение LVM_GETIMAGELIST . Функцию GetSystemMetrics можно использовать для определения соответствующих измерений для полноразмерных и небольших значков.
В следующем примере кода C++ определяемая приложением функция сначала создает списки изображений, а затем назначает их элементу управления представления списка.
// 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;
}
См. также