Здраствуйте, я недавно начал изучать VC++, ну и чтобы ускорить процесс, скачиваю различные исходники, разбираюсь в них, изменяю... Скачал вот этот исходник: http://www.sources.ru/cpp/cpp_cdirtreectrl_browser.shtml И вот собственно вопрос: Имеется класс CDirTreeCtrl, у него функция: | Код | void CDirTreeCtrl::ExpandBranch(HTREEITEM parent) { bool bOne=false;
if(parent==m_drives_root) { char *ptr;
DeleteAllChild(parent,false); GetLogicalDriveStrings(500,m_drives_name);
ptr=m_drives_name;
while (*ptr) { bOne=true; AddItem(ptr, m_drives_root, true); ptr+=strlen(ptr)+1; } } else { CString fullpath,pathWildcard;
fullpath=GetPathFromHere(fullpath, parent); DeleteAllChild(parent,false); pathWildcard=fullpath+"*.*";
CFileFind finder; BOOL bWorking = finder.FindFile(pathWildcard); while (bWorking) { bWorking = finder.FindNextFile(); if ( finder.IsDirectory() && !finder.IsDots() ) { bOne=true; HTREEITEM itm=AddItem (fullpath+finder.GetFileName(), parent ); InsertItem("",itm); } } bWorking = finder.FindFile(pathWildcard); while (bWorking) { bWorking = finder.FindNextFile(); if ( !finder.IsDirectory() && MatchExtension(finder.GetFileName()) ) { bOne=true; AddItem (fullpath+finder.GetFileName(), parent ); } }
} if (!bOne) InsertItem( "",parent); } |
Здесь дерево заполняется списком папок и файлов, я решил изменить функцию так, чтобы в дерево заносились только папки, а файлы в List Control. Делаю так: Создаю для List Control класс - class CListF : public CListCtrl Затем в выше приведенную функцию изменяю: | Код | void CDirTreeCtrl::ExpandBranch(HTREEITEM parent) { bool bOne=false; int coun = 1; //ОБЪЯВЛЯЮ СЧЕТЧИК if(parent==m_drives_root) { char *ptr;
DeleteAllChild(parent,false); GetLogicalDriveStrings(500,m_drives_name);
ptr=m_drives_name;
while (*ptr) { bOne=true; AddItem(ptr, m_drives_root, true); ptr+=strlen(ptr)+1; } } else { CString fullpath,pathWildcard;
fullpath=GetPathFromHere(fullpath, parent); DeleteAllChild(parent,false); pathWildcard=fullpath+"*.*";
CFileFind finder; BOOL bWorking = finder.FindFile(pathWildcard); while (bWorking) { bWorking = finder.FindNextFile(); if ( finder.IsDirectory() && !finder.IsDots() ) { bOne=true; HTREEITEM itm=AddItem (fullpath+finder.GetFileName(), parent ); InsertItem("",itm); } } bWorking = finder.FindFile(pathWildcard); while (bWorking) { bWorking = finder.FindNextFile(); if ( !finder.IsDirectory() && MatchExtension(finder.GetFileName()) ) { bOne=true; //ДАЛЕЕ ИЗМЕНЯЮ CListF* lf; coun = coun +1; lf->InsertItem(coun, fullpath+finder.GetFileName()); //AddItem (fullpath+finder.GetFileName(), parent ); } }
} if (!bOne) InsertItem( "",parent); } |
Говорит - Unhandled exception in PC_Browser.exe
--------------------
Вот такая у меня привычка, браться за задание, о выполнение которого я изначально не имею никакого представления.
|