BOOL CSortListCtrl::DeleteAllItems() { for( int iItem = 0; iItem < GetItemCount(); iItem ++ ) FreeItemMemory( iItem ); return CListCtrl::DeleteAllItems(); }
void CSortListCtrl::OnDestroy() { for( int iItem = 0; iItem < GetItemCount(); iItem ++ ) FreeItemMemory( iItem ); CListCtrl::OnDestroy(); }
/* OnDestroy() */ void CWallBrowserFileView::OnDestroy(void) { // deve eliminare gli elementi della lista FreeItemMemory(); CListViewEx::OnDestroy(); }
BOOL CSortListCtrl::DeleteItem(int iItem) { FreeItemMemory(iItem); return CListCtrl::DeleteItem(iItem); }
void CFileView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) { if (lHint == 0x5A) { FreeItemMemory (); GetListCtrl ().DeleteAllItems (); Refresh ((LPCTSTR) pHint); return; } CListView::OnUpdate (pSender, lHint, pHint); }
void CFileView::OnDestroy() { FreeItemMemory (); CListView::OnDestroy (); }
/* OnUpdate() */ void CWallBrowserFileView::OnUpdate(CView* pView,LPARAM lHint,CObject* pHint) { BOOL bHint = FALSE; static BOOL bTreeExpanded = FALSE; if(lHint & ONUPDATE_FLAG_TREEEXPANDED) { TRACE("%s(%d): receiving ONUPDATE_FLAG_TREEEXPANDED\n",__FILE__,__LINE__); bTreeExpanded = TRUE; CWallBrowserDoc* pDoc = (CWallBrowserDoc*)GetDocument(); if(pDoc) { TRACE("%s(%d): sending ONUPDATE_FLAG_TREEEXPANDEDEX\n",__FILE__,__LINE__); pDoc->UpdateAllViews(NULL,ONUPDATE_FLAG_TREEEXPANDEDEX); } } if(!bTreeExpanded) goto done; if(lHint & ONUPDATE_FLAG_DIRSELECTED) { TRACE("%s(%d): receiving ONUPDATE_FLAG_DIRSELECTED\n",__FILE__,__LINE__); // ri-selezionando la directory, riposiziona sul primo file della lista if(m_nPictures > 0) OnSelectItem(0); bHint = TRUE; } if((lHint & ONUPDATE_FLAG_TREEEXPANDED) || (lHint & ONUPDATE_FLAG_DIRCHANGED) || (lHint & ONUPDATE_FLAG_DIRUPDATED)) { TRACE("%s(%d): receiving ONUPDATE_FLAG_TREEEXPANDED || ONUPDATE_FLAG_DIRCHANGED || ONUPDATE_FLAG_DIRUPDATED\n",__FILE__,__LINE__); // salva l'elemento corrente della lista per il confronto nel caso in cui venga aggiornata la directory char szItem[_MAX_PATH+1]; int nItem = GetCurrentItem(szItem,sizeof(szItem)); SetRedraw(FALSE); FreeItemMemory(); GetListCtrl().DeleteAllItems(); SetCurrentItem(0); SetRedraw(TRUE); CWallBrowserDoc* pDoc = (CWallBrowserDoc*)GetDocument(); if(pDoc) { pDoc->SetPictureFlag(FALSE); pDoc->ResetFileName(); if(m_pMainFrameStatusBar) m_pMainFrameStatusBar->SetPaneText(ID_INDICATOR_FILENAME_ID,"reading directory..."); LoadList(pDoc->GetPathName()); if(m_pMainFrameStatusBar) m_pMainFrameStatusBar->SetPaneText(ID_INDICATOR_FILENAME_ID,""); } CWnd* pWnd = AfxGetMainWnd(); if(pWnd) { pWnd->SendMessage(WM_VIEW_PREVIOUS_PICTURE,m_nPictures > 0 ? TRUE : FALSE,0L); pWnd->SendMessage(WM_VIEW_NEXT_PICTURE,m_nPictures > 0 ? TRUE : FALSE,0L); } if(m_nPictures > 0) { if(lHint & ONUPDATE_FLAG_DIRUPDATED) { COnUpdateInfo* pOnUpdateInfo = (COnUpdateInfo*)pHint; strcpyn(szItem,pOnUpdateInfo->GetInfo(),sizeof(szItem)); LVFINDINFO lv = {0}; lv.flags = LVFI_STRING; lv.psz = szItem; if((nItem = GetListCtrl().FindItem(&lv,-1)) < 0) nItem = 0; } else nItem = 0; OnSelectItem(nItem); } else memset(m_szFileName,'\0',sizeof(m_szFileName)); bHint = TRUE; } if(lHint & ONUPDATE_FLAG_DEFAULTLIBRARY) { TRACE("%s(%d): receiving ONUPDATE_FLAG_DEFAULTLIBRARY\n",__FILE__,__LINE__); char szItem[_MAX_PATH+1]; int nItem = GetCurrentItem(szItem,sizeof(szItem)); int nTotItems = GetListCtrl().GetItemCount(); SetRedraw(FALSE); FreeItemMemory(); GetListCtrl().DeleteAllItems(); SetCurrentItem(0); SetRedraw(TRUE); CWallBrowserDoc* pDoc = (CWallBrowserDoc*)GetDocument(); if(pDoc) { if(m_pMainFrameStatusBar) m_pMainFrameStatusBar->SetPaneText(ID_INDICATOR_FILENAME_ID,"reading directory..."); LoadList(pDoc->GetPathName()); if(m_pMainFrameStatusBar) m_pMainFrameStatusBar->SetPaneText(ID_INDICATOR_FILENAME_ID,""); } // per gestire il cambio di libreria senza ridisegnare l'immagine se rimane la stessa BOOL bChanged = FALSE; if(nTotItems==GetListCtrl().GetItemCount()) { strcpyn(m_szFileName,szItem,sizeof(m_szFileName)); { LV_ITEM lvitem; lvitem.mask = LVIF_TEXT; lvitem.iItem = nItem; lvitem.iSubItem = 0; lvitem.pszText = szItem; lvitem.cchTextMax = sizeof(szItem)-1; GetListCtrl().GetItem(&lvitem); } if(strcmp(m_szFileName,szItem)!=0) { memset(m_szFileName,'\0',sizeof(m_szFileName)); bChanged = TRUE; } OnSelectItem(nItem); } else { bChanged = TRUE; nTotItems = GetListCtrl().GetItemCount(); if(nItem > nTotItems-1) nItem = nTotItems-1; if(nItem >= 0) OnSelectItem(nItem); } CWnd* pWnd = AfxGetMainWnd(); if(pWnd) { pWnd->SendMessage(WM_VIEW_PREVIOUS_PICTURE,nTotItems > 0 ? TRUE : FALSE,0L); pWnd->SendMessage(WM_VIEW_NEXT_PICTURE,nTotItems > 0 ? TRUE : FALSE,0L); } bHint = TRUE; } if(m_pMainFrameStatusBar) { char szStatus[_MAX_PATH+1]; _snprintf(szStatus, sizeof(szStatus)-1, "%d file(s)", m_nFiles ); m_pMainFrameStatusBar->SetPaneText(ID_INDICATOR_FILES_ID,szStatus); _snprintf(szStatus, sizeof(szStatus)-1, "%d picture(s)", m_nPictures ); m_pMainFrameStatusBar->SetPaneText(ID_INDICATOR_PICTURES_ID,szStatus); } done: if(!bHint) CListViewEx::OnUpdate(pView,lHint,pHint); }