How to use 256 Color Bitmaps in ImageList (Win32 SDK solution)

CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More.

–>

This is how to use 256(or 16bit, 24bit)-color bitmaps in ImageLists for
ListViews, TreeViews, etc…

Usually you use something like this to load/create your imagelist:

hScreens = ImageList_LoadImage(GetModuleHandle(NULL),
 MAKEINTRESOURCE(BMP_SCREENS), 100, CLR_NONE, CLR_NONE, IMAGE_BITMAP,
 LR_LOADTRANSPARENT);

However it will always convert your bitmap to 16 colors or fail.
now, simply replace it with this code:

HBITMAP hScrBM;

hScreens = ImageList_Create(100, 70, ILC_COLOR8, 0, 999);
hScrBM = LoadImage(GetModuleHandle(NULL),
 MAKEINTRESOURCE(BMP_SCREENS256), IMAGE_BITMAP, 0, 0,
 LR_LOADTRANSPARENT);

ImageList_Add(hScreens, hScrBM, NULL);

DeleteObject(hScrBM);

Of course, you can use other values instead of ILC_COLOR8 (256color):
ILC_COLOR16, ILC_COLOR24, … (see “ImageList_Create()” online help in
VC++)

Hope this helps…

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read