有一个从 CListCtrl 继承的 CxxxListCtrl的类
需要从 文件中动态加载 位图到 ImageList 里,并且可以作为 InsertItem的图标
但是加载以后,InsertItem出来的是 全黑色的一个图标,找不到问题在哪里,代码如下,请教各位高手指教,是有什么问题还是做法不对?int CxxxListCtrl::AddImage(CString &sImage,int cx,int cy)
{
CBitmap bmpSrc,bmpDest;
HBITMAP hBitmap = (HBITMAP)::LoadImage(0,sImage,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);
if(hBitmap == NULL)
return;
bmpSrc.Attach(hBitmap);
BITMAP bm;
bmpSrc.GetBitmap(&bm);
CClientDC cdcSrc(this),cdcDest(this);
bmpDest.CreateCompatibleBitmap(&cdcDest,cx,cy); CBitmap *pOldSrc = cdcSrc.SelectObject(&bmpSrc);
CBitmap *pOldDest = cdcDest.SelectObject(&bmpDest); cdcDest.StretchBlt(0,0,cx,cy,&cdcSrc,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
cdcSrc.SelectObject(pOldSrc);
cdcDest.SelectObject(pOldDest);
CImageList *pImageList = GetImageList(LVSIL_NORMAL);
int iIndex = pImageList->Add(&bmpDest,RGB(255,0,255));
return iIndex;
}
需要从 文件中动态加载 位图到 ImageList 里,并且可以作为 InsertItem的图标
但是加载以后,InsertItem出来的是 全黑色的一个图标,找不到问题在哪里,代码如下,请教各位高手指教,是有什么问题还是做法不对?int CxxxListCtrl::AddImage(CString &sImage,int cx,int cy)
{
CBitmap bmpSrc,bmpDest;
HBITMAP hBitmap = (HBITMAP)::LoadImage(0,sImage,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);
if(hBitmap == NULL)
return;
bmpSrc.Attach(hBitmap);
BITMAP bm;
bmpSrc.GetBitmap(&bm);
CClientDC cdcSrc(this),cdcDest(this);
bmpDest.CreateCompatibleBitmap(&cdcDest,cx,cy); CBitmap *pOldSrc = cdcSrc.SelectObject(&bmpSrc);
CBitmap *pOldDest = cdcDest.SelectObject(&bmpDest); cdcDest.StretchBlt(0,0,cx,cy,&cdcSrc,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
cdcSrc.SelectObject(pOldSrc);
cdcDest.SelectObject(pOldDest);
CImageList *pImageList = GetImageList(LVSIL_NORMAL);
int iIndex = pImageList->Add(&bmpDest,RGB(255,0,255));
return iIndex;
}
~~~~~~~~~~~~~~~这里要取背景色
后面的是 Mask Color 设成什么都是可以的,为什么要设成背景色?
我指定了 紫色 是透明的,这样写应该是对的。
_tree_image_bmp.LoadBitmap(IDB_IMAGE_LIST);
_tree_image_list.Create(16, 16, ILC_COLORDDB|ILC_MASK, 10, 0);
_tree_image_list.Add(&_tree_image_bmp, RGB(255, 0, 255));