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类遍历磁盘,这其实是一个递归函数,以下是具体的代码