这个函数想要实现的是深度优先搜索算法,用于搜索WindowsXP下的每一个文件夹,把它们列举出来。
void DFSTree(CString sPath,CString sBegin)
{
if(sPath.GetLength()==1) sPath=sPath+":";
WIN32_FIND_DATA wfd;
HANDLE hFind=FindFirstFile(sPath+"\\*.*",&wfd);
BOOL bMore=TRUE;
while(hFind!=INVALID_HANDLE_VALUE&&bMore)
{
[[[[ TRACE(sBegin);
这个框内程序段有问题。
if(wfd.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY
&&CString(wfd.cFileName)!="."&&CString(wfd.cFileName)!=".."&&CString(wfd.cFileName)>sBegin)
DFSTree(sPath+"\\"+wfd.cFileName,"");
else bMore=FindNextFile(hFind,&wfd);
]]]]] }
FindClose(hFind);
if(bMore==FALSE)
{
int nPos=sPath.ReverseFind('\\');
if(nPos==-1) return;//exit.
else
{
TRACE(sBegin);
DFSTree(sPath.Left(nPos),sPath.Right(sPath.GetLength()-sPath.ReverseFind('\\')-1));
}
}
}