MFC CTreeCtrl运用

CTreeCtrl运用
删除无效资源
递归的运用
自写遍历目录函数
递归遍历所有子目录


一、删除无效资源
    1、打开资源文件
    2、找到无效链接删掉
二、自写遍历目录函数
    CFileFind findfile;
    int nfound=findfile.FindFile(dirpath); 
     
while(nfound)//遍历文件
    {
      nfound=findfile.FindNextFile();
     }
三、递归遍历所有子目录
 int FindAll()
{
   CFileFind findfile;
    int nfound=findfile.FindFile(dirpath); 
     
while(nfound)//遍历文件
    {
      nfound=findfile.FindNextFile();
      FindAll();
     }
}



//代码示例
//dirpath L"C:\\Windows\\SYSTEM32\\"
int CDialog_TreeCtrl_Test::findAll(CString dirpath,HTREEITEM parentItem)
{

    static int  j=0;
    dirpath+=L"//*.*";
    //遍历D盘目录
    CTreeCtrl* ptree=(CTreeCtrl*)GetDlgItem(IDC_TREE1);

    CFileFind findfile;
    int nfound=findfile.FindFile(dirpath); 
     
while(nfound)//遍历文件
    {
        nfound=findfile.FindNextFile();
        ////递归调用
        WCHAR ws[1256]=L"";
        wcscpy(ws,findfile.GetFilePath().GetString());
        
        
if (findfile.IsDots())
        {

            continue;

        }
if (findfile.IsDirectory())
{            

   //添加数据和图标
SHFILEINFO finfo;
SHGetFileInfo(findfile.GetFilePath(),0,&finfo,sizeof(finfo),SHGFI_ICON |SHGFI_TYPENAME );
//添加文件项目和图标         
HTREEITEM hitem=ptree->InsertItem(findfile.GetFileName(),imagesmall.Add(finfo.hIcon) ,0,parentItem);
 //递归调用
findAll(findfile.GetFilePath(),hitem);


        }

    }

 

posted @ 2016-12-27 15:29  whzym111  阅读(322)  评论(0编辑  收藏  举报