一个关于资料查找与处理 为什么只能处理第一个找到的文件,而后面的只在列表中显示它的路径

一个关于文件查找与处理 为什么只能处理第一个找到的文件,而后面的只在列表中显示它的路径
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();
}

------解决方案--------------------
那是API
CFileFind是2005后才有的吧?
------解决方案--------------------
要递归文件夹才行。