У меня была проблема с тем, что мое растровое изображение всегда отображалось черным при добавлении в список изображений.
Я наконец понял это сам. Вот урезанная версия моего кода.
// get device context
CDC* pDC = GetDC();
// create image list
imageList.Create( cx, cy, ILC_COLOR24, 1, 1 );
// Create offscreen device context
CDC memDC;
memDC.CreateCompatibleDC( pDC );
// Create new bitmap of size cx by cy
CBitmap newBmp;
newBmp.CreateCompatibleBitmap( pDC, cx, cy );
// Select new bitmap in memory for drawing
CBitmap* pOldBmp = memDC.SelectObject( &newBmp );
// do drawing here...
// e.g. memDC.FillSolidRect( 0, 0, cx, cy, RGB(255,0,0) );
/*
IMPORTANT:
Deselect new bitmap before adding to image list,
otherwise you'll potentially end up with a black icon
*/
memDC.SelectObject( pOldBmp );
// add bitmap to image list
imageList.Add( &bitmap, (CBitmap*)NULL );
// cleanup
memDC.DeleteDC();
ReleaseDC( pDC );
Надеюсь, это кому-нибудь поможет.