原创  实现缩略图 收藏

  //(当不是图片的时候的做法)

 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... ) | 编辑| 举报| 收藏

旧一篇:WH_JOURNALRECORD与WH_JOURNALPLAYBACK应用(记录和回放) | 新一篇:修改函数的第一,第六,第七字节实现函数跳转(利用汇编语言)

  • 发表评论
  • 评论内容:
  •  
Copyright © BigFanOfCpp
Powered by CSDN Blog