It's scattered around the code but here are the relevant bits:

In the constructor
Code:
mnubmp = (HBITMAP) LoadImage (0, bmpsrc, IMAGE_BITMAP, bmplen, height, LR_LOADFROMFILE);
where bmpsrc is a char* parameter. All other variables are instance variables with valid values. LoadImage returns a valid handle.

In the draw method
Code:
HDC hdcMem = CreateCompatibleDC (dis->hDC);
HGDIOBJ hbmpOld = SelectObject (hdcMem, mnubmp);
HGDIOBJ brushOld = SelectObject (hdcMem, brush);
FillRect (dis->hDC, &dis->rcItem, (HBRUSH) brush);
ExtFloodFill (hdcMem, 0, 0, GetPixel (hdcMem, 0, 0), FLOODFILLSURFACE);
BitBlt (dis->hDC, dis->rcItem.left + ((maxbmplen + BMP_PADD - bmplen) /2), dis->rcItem.top + ((dis->rcItem.bottom - dis->rcItem.top - height) / 2),maxbmplen, height, hdcMem, 0, 0, SRCCOPY);
where dis is a DRAWITEMSTRUCT* parameter and brush is a HBRUSH parameter. All other variables are instance variables with valid values. mnubmp retains its valid value. CreateCompatibleDC return a valid handle; the first SelectObject returns NULL.