void CFindFileDlg::find(CString dir)
{
CFileFind ff;
CString path;
//MessageBox(dir);
if(dir.Right(1)!="//")
dir+="//";
dir+="*.*";
BOOL res=ff.FindFile(dir,0);
while(res)
{
res=ff.FindNextFile();
path=ff.GetFilePath();
{
if(path.Right(3)=="tmp"||path.Right(3)=="_mp"||path.Right(3)=="log"||path.Right(3)=="old"||
path.Right(3)=="bak"||path.Right(3)=="gid"||path.Right(3)=="chk")
{
m_list.AddString(path);
count++;
}
}
if (ff.IsDots())
{
continue;
}
if (ff.IsDirectory())
{
find(path);
}
}
ff.Close();
}
关于获得电脑中的盘符,主要用到GetLogicalDriveStrings()函数
具体的代码是:
DWORD len=GetLogicalDriveStrings(0,NULL);
if(len>0)
{
char *pnamelist=new char[len+1];
memset(pnamelist,0,len+1);
GetLogicalDriveStrings(len,pnamelist);
char *pitem=pnamelist;
while(*pitem)
{
m_com.AddString(pitem);
pitem+=strlen(pitem)+1;
}
delete []pnamelist;
}
对于CFindFile类遍历磁盘,这其实是一个递归函数,以下是具体的代码