对以前的改进MFC略缩图控件改进

来源:互联网 发布:淘宝运营思路 编辑:程序博客网 时间:2024/05/17 02:41

以前写了一篇日记, 显示略缩图,见

《自绘列表框控件显示略缩图----再稍微改进点点。。》

http://blog.csdn.net/hemmingway/article/details/7483619


这次给他加点改进,就是增加删除被勾选的图片。。。

增加两个函数:


CString MakeFilename(int nItem);
BOOL ClearChecked(int nSubItem = 0);   //clear all checked item


CString CListImageCtrl::MakeFilename(int nItem){ASSERT(nItem >= 0);ASSERT(nItem < GetItemCount());if ((nItem < 0) || nItem >= GetItemCount())return FALSE;ASSERT(!m_VectorImageNames.empty());// read the image fileCString  fileName;if (m_strImageDir.Right(1) == TEXT("\\") )fileName.Format( TEXT("%s%s"), m_strImageDir, m_VectorImageNames[nItem] );elsefileName.Format( TEXT("%s\\%s"),m_strImageDir, m_VectorImageNames[nItem] );return fileName;}BOOL CListImageCtrl::ClearChecked(int nSubItem /*= -1*/){// hold the window update to avoid flickingSetRedraw(FALSE);//////////////////////////////////////////////////////////////////////////ASSERT(nSubItem >= 0);ASSERT(nSubItem < GetColumns());if ((nSubItem < 0) || nSubItem >= GetColumns())return FALSE;unsigned  int offset = 0;int n = GetItemCount();for (int nItem = 0; nItem < n; nItem++){unsigned int idx = nItem-offset;XLISTCTRLDATA *pXLCD = (XLISTCTRLDATA *) CListCtrl::GetItemData(idx);if (!pXLCD){continue;}if (pXLCD[nSubItem].nCheckedState == 1 )//checked, delete it{CString file = MakeFilename(idx);DeleteFile(file);m_VectorImageNames.erase(m_VectorImageNames.begin() + idx);//m_ImageListThumb.Remove(idx);//error?this->DeleteItem(idx);offset++;if(m_nSelectedItem == idx)m_nSelectedItem = -1;}}Arrange(LVA_ALIGNTOP);SetRedraw(); return TRUE;}