|
|
如何?得ListControl的ImageList的Bitmap
CSortListCtrl是?承ListControl的??e
我想?出ImageList中的一??Bitmap的?D形,要如何取得呢?
我用以下的方法不能成功,直接m_bitmap->m_hObject指定??_bitmaps是可以正常?出
m_bitmap->m_hObject=m_bitmaps[nimage];
PS: m_bitmaps[0].m_hObject = (HBITMAP): oadBitmap(::AfxGetInstanceHandle() ,MAKEINTRESOURCE(IDB_BITMAP3));
void CSortListCtrl: rawText(int nItem, int nSubItem, CDC *pDC, COLORREF crText, COLORREF crBkgnd, CRect &rect)
{
ASSERT(pDC);
// GetDrawColors(nItem, nSubItem, crText, crBkgnd);
pDC->FillSolidRect(&rect, crBkgnd);
CString str;
str = GetItemText(nItem, nSubItem);
if (!str.IsEmpty())
{
// get text justification
HDITEM hditem;
hditem.mask = HDI_FORMAT;
m_ctlHeader.GetItem(nSubItem, &hditem);
int nFmt = hditem.fmt & HDF_JUSTIFYMASK;
UINT nFormat = DT_VCENTER | DT_SINGLELINE;
if (nFmt == HDF_CENTER)
nFormat |= DT_CENTER;
else if (nFmt == HDF_LEFT)
nFormat |= DT_LEFT;
else
nFormat |= DT_RIGHT;
//icon
#define _TEST_ICON_IMAGE_
#ifdef _TEST_ICON_IMAGE_
char cc[2];
strmid(str.GetBuffer(0),cc,3,1);
int nimage;
nimage=atoi(cc);
CDC* m_mdc=new CDC;
m_mdc->CreateCompatibleDC(pDC);
#define _USE_IMAGELIST_
#ifdef _USE_IMAGELIST_
CImageList* image_list;
image_list=GetImageList(LVSIL_SMALL);
IMAGEINFO ImageInfo;
image_list->GetImageInfo(nimage,&ImageInfo);
m_bitmap->m_hObject=ImageInfo.hbmImage;
#else
//
m_bitmap->m_hObject=m_bitmaps[nimage];
#endif//_USE_IMAGELIST_
m_mdc->SelectObject(m_bitmap);
BOOL bBlt=pDC->BitBlt(rect.left,rect.top,rect.left+15,rect.top+15,m_mdc,0,0,SRCCOPY);
delete m_mdc;
//text
rect.OffsetRect(20,0);
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(crText);
pDC->SetBkColor(crBkgnd);
pDC->DrawText(str.GetBuffer(0)+3, &rect, nFormat);
#endif//_TEST_ICON_IMAGE_
}
} |
|