Привет.
Никак не получается нарисовать 32-битный битамп с альфа-каналом.
Нарисовать мне его нужно не на тулбаре, а просто в диалоговом окне поверх фонового рисунка.
Вот кусок кода:
CImageList m_ilBitmaps;
// ................................
CBitmap* pBmp;
pBmp = new CBitmap;
HINSTANCE hInst = AfxFindResourceHandle(MAKEINTRESOURCE(IDB_STARTINDICATOR), RT_BITMAP);
HBITMAP hBmp = (HBITMAP)LoadImage(hInst, MAKEINTRESOURCE(IDB_STARTINDICATOR),
IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_CREATEDIBSECTION);
pBmp->Attach(hBmp);
// pBmp->LoadBitmap(IDB_STARTINDICATOR); Такой вариант работает аналогично.
m_mapBitmaps[IDB_STARTINDICATOR] = pBmp;
// ..............
m_ilBitmaps.Create(15, 15, ILC_COLOR32, 2, 2);
m_ilBitmaps.Add(pBmp, (CBitmap*)NULL);
// ..............
// Здесь пробую рисовать
CPoint pt;
pt.x = rClient.right-15;
pt.y = rClient.top ;
m_ilBitmaps.DrawIndirect (pDC, 0, pt, CSize(0,0), CPoint(0,0), ILD_PRESERVEALPHA, SRCCOPY, CLR_NONE,
CLR_NONE, ILS_NORMAL, 0, CLR_DEFAULT);
В результате вместо прозрачности получается каринка с черным фоном.
Манифест присутствует. В то же время в тулбаре та же картинка рисуется как надо.
Подскажите, в чем моя ошибка. Может есть какой-то другой способ нарисовать без использования CImageList ?
Программа должна работать на Windows XP SP2, совместимость с предыдущими версиями не обязательна.
Буду благодарен за любую идею.
Всего хорошего