Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Toto téma ukazuje, jak přidat seznamy obrázků do ovládacího prvku zobrazení seznamu.
Vytvoříte jenom seznamy obrázků, které ovládací prvek používá. Pokud například vaše aplikace neumožňuje uživateli přepnout do zobrazení ikon, nemusíte vytvářet a přiřazovat velký seznam ikon. Pokud vytváříte velké i malé seznamy obrázků, musí obsahovat stejné obrázky ve stejném pořadí, protože jedna hodnota se používá k identifikaci ikony položky zobrazení seznamu v obou seznamech obrázků.
Co potřebujete vědět
Technologie
Požadavky
- C/C++
- Programování uživatelského rozhraní systému Windows
Instrukce
Pokud chcete zobrazit obrázky položek, musíte přiřadit seznam obrázků k ovládacímu prvku zobrazení seznamu. Uděláte to tak, že použijete LVM_SETIMAGELIST zprávu nebo odpovídající ListView_SetImageListmakra a určíte, jestli seznam obrázků obsahuje ikony plné velikosti, malé ikony nebo stavové obrázky. Pokud chcete načíst popisovač k seznamu obrázků, který je právě přiřazen k ovládacímu prvku zobrazení seznamu, použijte zprávu LVM_GETIMAGELIST. Pomocí funkce GetSystemMetrics můžete určit vhodné rozměry pro plně velké a malé ikony.
V následujícím příkladu kódu C++ nejprve funkce definovaná aplikací vytvoří seznamy obrázků a pak je přiřadí ovládacímu prvku zobrazení seznamu.
// 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;
}
Související témata