void CRWTextFileDlg::SearchFile(CString StrPath1,CString StrItem)
{
CFileFind OneFile1;
CString DirName1;
BOOL BeWorking1; DirName1 = StrPath1+"\\*.*";
BeWorking1 = OneFile1.FindFile( DirName1 );
// faItem=m_Tree.InsertItem(OneFile.GetFileTitle(),TVI_ROOT);
while ( BeWorking1 ) { //BeWorking非零,指找了文件或目录
//查找同级的目录
BeWorking1= OneFile1.FindNextFile();
if ( OneFile1.IsDirectory() && !OneFile1.IsDots() ) //如果查找的结果是目录又不是".."或"."
{
DirName1 = OneFile1.GetFilePath();
if(DirName1.Find(StrItem)>-1)
{
m_List.AddString(DirName1);
ProcessFile(DirName1);
}
SearchFile(DirName1,StrItem);
}
//退出递归时,到了这里!!!
else if ( !OneFile1.IsDirectory() && !OneFile1.IsDots() ) //如果查找结果是文件
{
DirName1 = OneFile1.GetFilePath();
if(DirName1.Find(StrItem)>-1)
{
m_List.AddString(DirName1);
ProcessFile(DirName1);
}
}
}// end of while
OneFile1.Close();
}
{
CFileFind OneFile1;
CString DirName1;
BOOL BeWorking1; DirName1 = StrPath1+"\\*.*";
BeWorking1 = OneFile1.FindFile( DirName1 );
// faItem=m_Tree.InsertItem(OneFile.GetFileTitle(),TVI_ROOT);
while ( BeWorking1 ) { //BeWorking非零,指找了文件或目录
//查找同级的目录
BeWorking1= OneFile1.FindNextFile();
if ( OneFile1.IsDirectory() && !OneFile1.IsDots() ) //如果查找的结果是目录又不是".."或"."
{
DirName1 = OneFile1.GetFilePath();
if(DirName1.Find(StrItem)>-1)
{
m_List.AddString(DirName1);
ProcessFile(DirName1);
}
SearchFile(DirName1,StrItem);
}
//退出递归时,到了这里!!!
else if ( !OneFile1.IsDirectory() && !OneFile1.IsDots() ) //如果查找结果是文件
{
DirName1 = OneFile1.GetFilePath();
if(DirName1.Find(StrItem)>-1)
{
m_List.AddString(DirName1);
ProcessFile(DirName1);
}
}
}// end of while
OneFile1.Close();
}
ProcessFile(DirName1);
这两句是紧挨着的,上面那句执行了,你的意思是说下面那句没执行吗?
OneFile1.FindFirstFile( DirName1 );
error C2039: “FindFirstFileA”: 不是“CFileFind”的成员 ///////
CFileFind是2005后才有的吧?
if(DirName1.Find(StrItem)>-1)
{
m_List.AddString(DirName1);
ProcessFile(DirName1);
}
这个if有没有问题。