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);
}
}