CString target_file = pszPath; //目标路径
if(target_file.GetLength() > 1 && target_file.Right(1) != '//')
target_file += '//';
if(include_subDirectory) //包括子目录
target_file += "*.*";
else
target_file += pszExt;
bool b_find_all_file = false; //查找所有文件指示
if(CString(pszExt) == ".*") //扩展名使用通配符
b_find_all_file = true;
CFileFind find;
BOOL ret = find.FindFile(target_file); //查找文件
while(ret)
{
ret = find.FindNextFile();
if(find.IsDots()) //. 或 .. 文件
{
}
else if(find.IsDirectory()) //子目录
{
if(include_subDirectory) //搜索子目录标志
{
//递归方式搜索下一级目录
CString next_path = find.GetFilePath();
found_count += Find_special_File(next_path,pszExt,include_subDirectory,pList);
}
}
else //file
{
CString file_Name = find.GetFilePath();
if(b_find_all_file //所有文件
|| ( file_Name.GetLength() > file_fliter_len
&& file_Name.Right(file_fliter_len) == pszExt) //扩展名匹配
)
{
pList->AddString(file_Name); //插入列表
found_count++; //搜索计数增加
}
}
}
find.Close(); //关闭搜索
return(found_count); //返回搜索到数目
}