//(当不是图片的时候的做法)
SHFILEINFO shfi;
if (GetFileIcon(cstrFile,shfi))/*获得注册表图标,在我以前的文章里有这个函数的实现.*/
{
if (shfi.hIcon)
{
m_Icon.Add(shfi.hIcon);/*一个CImageList,作用是获得图标的HBITMAP*/
IMAGEINFO ImgInfo;
m_Icon.GetImageInfo(m_Icon.GetImageCount()-1,&ImgInfo);
CClientDC cdc(......);
HDC hDC_Target = ::CreateCompatibleDC(cdc.m_hDC);
HBITMAP bm = ::CreateCompatibleBitmap(cdc.m_hDC, SCALE_WIDTH, SCALE_HEIGHT);
::SelectObject(hDC_Target,bm);
::Rectangle(hDC_Target,0,0,SCALE_WIDTH, SCALE_HEIGHT);
CRect rect(ImgInfo.rcImage);
::DrawIcon(hDC_Target,(SCALE_WIDTH/2)-(rect.Width()),(SCALE_HEIGHT/2)-(rect.Height()),shfi.hIcon);
DeleteDC(hDC_Target);/*释放目标HDC,同时HDC也会脱离对bm的控制,bm自由了.*/
CBitmap Bitmap;
Bitmap.Attach(bm);
m_Img.Add(&Bitmap,(CBitmap*)NULL);/*将图像放到CImageList里,这样就可以在各种控件上显示了.*/
}
}
//(当是图片的时候的做法)
做法差不多,留着大家练手吧,呵呵.
发表于 @ 2005年04月04日 17:24:00 | 评论( loading... ) | 举报| 收藏