代码如下:
void CMyqqListCtrl::OnPaint()
{
省略.....
int nItemCount = GetItemCount();
int nItem = 0;
CRect rcItem,rcText,rcIcon; POINT pt;
GetCursorPos(&pt);
ScreenToClient(&pt); while ((nItem < nItemCount) && (nItem >=0))
{
GetItemRect(nItem,rcItem, LVIR_BOUNDS); //get Rectangle of the icon and Lable
GetItemRect(nItem,rcText, LVIR_LABEL);
GetItemRect(nItem,rcIcon, LVIR_ICON);
//DWORD nStyle = GetItemData(nItem);
CImageList* pImageList=NULL;
pImageList = GetImageList(LVSIL_SMALL); LVITEM item;
memset(&item,0,sizeof(LVITEM));
item.iItem =nItem;
item.mask =LVIF_IMAGE;
GetItem(&item);
int iImage =item.iImage; //在内存中绘制位图
IMAGEINFO pImageInfo;
pImageList->GetImageInfo(iImage ,&pImageInfo);
bitmap.FromHandle( pImageInfo.hbmImage);
bitmap.GetBitmap(&bitMap);
省略.....
}
}
问题是:红色部分,得到的bitMap结构不是正常的位图,宽度和高度都不是正常的尺寸
void CMyqqListCtrl::OnPaint()
{
省略.....
int nItemCount = GetItemCount();
int nItem = 0;
CRect rcItem,rcText,rcIcon; POINT pt;
GetCursorPos(&pt);
ScreenToClient(&pt); while ((nItem < nItemCount) && (nItem >=0))
{
GetItemRect(nItem,rcItem, LVIR_BOUNDS); //get Rectangle of the icon and Lable
GetItemRect(nItem,rcText, LVIR_LABEL);
GetItemRect(nItem,rcIcon, LVIR_ICON);
//DWORD nStyle = GetItemData(nItem);
CImageList* pImageList=NULL;
pImageList = GetImageList(LVSIL_SMALL); LVITEM item;
memset(&item,0,sizeof(LVITEM));
item.iItem =nItem;
item.mask =LVIF_IMAGE;
GetItem(&item);
int iImage =item.iImage; //在内存中绘制位图
IMAGEINFO pImageInfo;
pImageList->GetImageInfo(iImage ,&pImageInfo);
bitmap.FromHandle( pImageInfo.hbmImage);
bitmap.GetBitmap(&bitMap);
省略.....
}
}
问题是:红色部分,得到的bitMap结构不是正常的位图,宽度和高度都不是正常的尺寸
CBitmap* bitmap = CBitmap::FromHandle( pImageInfo.hbmImage);
bitmap->GetBitmap(&bitMap);