1.声明一个CImagelist和CListCtrl对象
CImagelist* pImageList = new CImageList;
CListCtrl* m_ListCtrl;
2.pImageList->Create(PicWidth,PicHeight, ILC_COLOR32, PicNum, 0);
m_ListCtrl.SetImageList(pImageList,LVSIL_NORMAL); //将CImagelist与CListCtrl绑定
m_ListCtrl.DeleteAllItems();//先清除已有的
m_ListCtrl.SetIconSpacing(CSize(125,5));
for (int i=0;i<PicNum;i++)
{
if( !f.Open(PicPath, CFile::modeRead)){
hBitmap = (HBITMAP)LoadImage(NULL,PicPath,IMAGE_BITMAP,110,83,
LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE); //加载成缩略图
}
pBitmap[i].Attach(hBitmap);
pImageList->Add(&pBitmap[i],RGB(0,0,0));//添加图片到CImagelist中
int x = m_ListCtrl.InsertItem(i,NULL,i);
m_BmpPathMap.SetAt(i,PicPath);//将图片路径保存到CMap中,为点击看大图使用
}
执行步骤二,已经将图片添加的ListCtrl控件中了,这样图片就可以在Listctrl控件上显示出来了
3.点击一个缩略图,看大图:
(1)需要注册这样一个事件: ON_NOTIFY(LVN_ITEMCHANGED, IDC_LISTCTRL, OnItemchangedListctrl);
(2) OnItemchangedListctrl的实现函数如下:
void CDXCaptureDlg::OnItemchangedListctrl(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
if(pNMListView->uChanged==LVIF_STATE)
{
if(pNMListView->uNewState & LVIS_SELECTED)
{
int nItem=pNMListView->iItem;
CString path;
m_BmpPathMap.Lookup(nItem,path);
ShowImg(path);
}
}
*pResult = 0;
}
4.实现的效果如图所示: