Я нашел ссылку , которая показывает вам, как преобразовать CBitmap
в HICON
:
HICON HICONFromCBitmap(CBitmap& bitmap)
{
BITMAP bmp;
bitmap.GetBitmap(&bmp);
HBITMAP hbmMask = ::CreateCompatibleBitmap(::GetDC(NULL),
bmp.bmWidth, bmp.bmHeight);
ICONINFO ii = {0};
ii.fIcon = TRUE;
ii.hbmColor = bitmap;
ii.hbmMask = hbmMask;
HICON hIcon = ::CreateIconIndirect(&ii);
::DeleteObject(hbmMask);
return hIcon;
}
Итак, я попробовал это в своем приложении:
HICON hIcon = HICONFromCBitmap(m_mapMenuBitmap[5]);
VERIFY(hIcon);
m_StatusBar.GetStatusBarCtrl().SetIcon(paneProgressOrZoomFactor, hIcon);
Это работает:
Нужно ли hIcon
быть живым на время моего окна? И нужно ли мне это освобождать?
Для вашего пояснения, моя m_mapMeniBitmaps
- это карта CBitmap
объектов, и они остаются в живых .