怎样在视图里利用CListCtrl做一个缩略图。

解决方案 »

  1.   

    BEGIN_MESSAGE_MAP(CImagePage, CPropertyPage)
    //{{AFX_MSG_MAP(CImagePage)
    ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST_PREVIEW, OnCustomDraw)
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    void CImagePage::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    // TODO: Add your control notification handler code here
    LPNMLVCUSTOMDRAW pnmCustDraw = (LPNMLVCUSTOMDRAW)pNMHDR;
    switch(pnmCustDraw->nmcd.dwDrawStage){
    case CDDS_PREPAINT:
    *pResult = CDRF_NOTIFYITEMDRAW ;break;
    case CDDS_ITEMPREPAINT:
    *pResult = CDRF_NOTIFYPOSTPAINT ;break;
    case CDDS_ITEMPOSTPAINT:{
    int iItem=pnmCustDraw->nmcd.dwItemSpec;
    CDC dc;
    dc.Attach(pnmCustDraw->nmcd.hdc);
    HICON hi=GetIconFromFile(m_strImageFile,iItem);
    m_pic.CreateFromIcon(hi);DestroyIcon(hi);
    CRect rectDest;
    //call CListCtrl::GetItemRect to get target rect
    m_wndImgPrvwList.GetItemRect(iItem,rectDest,LVIR_ICON);
    dc.DPtoLP(rectDest);
    m_pic.Render(&dc,&rectDest);
    dc.Detach();
    *pResult = CDRF_DODEFAULT;
    break;
    }
    default:
    *pResult = CDRF_DODEFAULT;
    break;
    }
    }
      

  2.   

    http://www.codeproject.com/listctrl/thumbnailview.asp