Image list overview
Image list as the name suggest is a container to hold an array of images that can be used in other controls in the application. Image list is not an independent GUI element like button or textbox which user can interact with. Rather image list is maily an invisible control and used indirectly in the toolbars, list or tree controls. Image list generally holds a group of icons, bitmaps or images for the use of other controls. We see toolbars have new, open, save buttions or Windows explorer has icons for files and folders. All these icons are loaded in an image list then they are used. Toolbars, Tree and list control have APIs to associate an image list to itself. Later those controls directly uses the images from the list control.
Image list library calls
Windows common control controls library provides a collection of APIs for verious controls including Image list. ImageList_Create is the API to create the image list. Developers then need to add images to the list. ImageList_Add API is generally used for this purpose. This image list can be used to display verious icons and images in list view or tree view. SetImageList is the API to associate the image list object to the list view or tree view.
ImageList APIs
Here is the full list of ImageList utility APIs. Each API does a certain operation on the image list. Opertion name is appended with API nameand thus developer can easily choose the APIs to be used in their application. MSDN has full documentation on these APIs.
ImageList_Add
ImageList_AddMasked
ImageList_BeginDrag
ImageList_CoCreateInstance
ImageList_Copy
ImageList_Create
ImageList_Destroy
ImageList_DragEnter
ImageList_DragLeave
ImageList_DragMove
ImageList_DragShowNolock
ImageList_Draw
ImageList_DrawEx
ImageList_DrawIndirect
ImageList_Duplicate
ImageList_EndDrag
ImageList_GetBkColor
ImageList_GetDragImage
ImageList_GetIcon
ImageList_GetIconSize
ImageList_GetImageCount
ImageList_GetImageInfo
ImageList_LoadImage
ImageList_Merge
ImageList_Read
ImageList_ReadEx
ImageList_Remove
ImageList_Replace
ImageList_ReplaceIcon
ImageList_SetBkColor
ImageList_SetColorTable
ImageList_SetDragCursorImage
ImageList_SetIconSize
ImageList_SetImageCount
ImageList_SetOverlayImage
ImageList_Write
ImageList_WriteEx
ImageList Example
HIMAGELIST hLarge;
HIMAGELIST hSmall;
void CreateImageList(void)
{
HICON hiconItem;
HMODULE hDll;
// Create the full-sized icon image lists.
hLarge = ImageList_Create(GetSystemMetrics(SM_CXICON),
GetSystemMetrics(SM_CYICON),
ILC_COLOR32|ILC_MASK, 1, 1);
hSmall = ImageList_Create(GetSystemMetrics(SM_CXSMICON),
GetSystemMetrics(SM_CYSMICON),
ILC_COLOR32|ILC_MASK, 1, 1);
hDll = LoadLibrary ( "SHELL32.dll" );
// Add an icon to each image list.
hiconItem = LoadIcon (hDll , MAKEINTRESOURCE ( 3));
ImageList_AddIcon(hLarge, hiconItem);
ImageList_AddIcon(hSmall, hiconItem);
}
void SetImageList(HWND hWndListView)
{
ListView_SetImageList(hWndListView, hLarge, LVSIL_NORMAL);
ListView_SetImageList(hWndListView, hSmall, LVSIL_SMALL);
}
void DestroyImageList(void)
{
ImageList_Destroy(hLarge);
ImageList_Destroy(hSmall);
}
About our authors: Team EQA
Further readings
Where is WinMain() function in MFC application ?
MFC hides WinMain in its framework and includes source file on WinMain(). This explains how framework calls global CWinApp::Initinstance() from entry WinMain.
What is the utility of CWinApp class?
This is constructed during global C++ objects are constructed and is already available when Windows calls the WinMain function, which is supplied by the ...
Basic steps in Win32 GUI Application with source code.
Define a custom Window class structure, Register the class name, CreateWindow, Show windows and write message get and dispatch loop statements. Define the Window CallBack procedure and write the handlers.
What is a Window CallBack procedure and what is its utility?
DispatchMessage() is a API which indirectly triggers the Window CallBack procedure. Message structure members from this function are passed to the CallBack procedure. CallBack procedure should implement event handlers depending on the need of the application.
What are LPARAM and WPARAM in window proc function?
LPARAM and WPARAM are the two parameters in Window CallBack procedure. They signifies parameters of various events. They are used in handing individual events.
What are the basic steps of a typical MFC based application?
We need to write WinMain and need to follow all these in a Win32 application. However we need not to write much if we are writing an application with MFC ...