CListCtrl和CImageList通过CListCtrl.SetImageList绑定后可以将控件与图片列表相关联。
当我们需要删除CListCtrl的某一项后,可以使用CListCtrl.DeleteItem和CImageList.Remove删除。 但是由于CListCtrl中的子项中对应的图片索引并没有改变,导致CListCtrl的图片的预览会出现问题。
因此可以通过重新修改CListCtrl子项中的图片索引来解决:
int Index=2; //删除的项索引
CListCtrl listCtrl ;
CImageList m_ImageList;
listCtrl .DeleteItem(Index);
m_ImageList.Remove(Index);
int count=listCtrl .GetItemCount();
for(int i=0;i<count;i++){
LVITEM lvItem;
lvItem.iItem = i;//指定您选中的项
lvItem.iSubItem =0;//指定您选中项的字项
lvItem.mask = LVIF_IMAGE;
GetItem( &lvItem );
lvItem.iImage=i;
listCtrl .SetItem(&lvItem);
}
(本人在这个问题上卡过一些时间,希望能对大家有点帮助。)