安葉と申します.

以前私は以下のような再帰関数を用いて
ファイルを検索しました.

// # 以下のコードは未確認です.
// #  手法の雰囲気が伝わればと思いダ
// # ーっと書きました.
int hoge( LPCTSTR pstrName )
{
  CString   strName( pstrName );
> CFileFind CFinder;

  strName += "\\*.*";

> BOOL bWorking
>     = CFinder.FindFile( (LPCTSTR)strName );
> while(bWorking) {
>     bWorking = CFinder.FindNextFile();
>     CString cFilename = CFinder.GetFilePath();
>     if(!CFinder.IsDots() == FALSE)
>         continue;
>     if( CFinder.IsDirectory() )
      {// 検索結果はディレクトリだった.

          // 再帰的に検索する.
          hoge( (LPCTSTR)cFilename );
>         continue;
      }
> }

  return 0;
}

> 上記のやり方だとaaaaaディレクトリやbbbbbディレクトリのみしか検索できず
> ファイルの格納場所まで到達できません。

つまり, ディレクトリであれば, その名前
を新たな起点にして検索すればよいかと.

> 他のクラスなどを使わないと実現できないものなのでしょうか???。
> それとも他のやり方でファイルまで到達できるものなのでしょうか???。

微妙ですね.
上で示したコードはコードこそ一箇所です
けれども, 複数の CFileFind クラスを使用
していることには変わりないですものね.

# ま, こんなやり方もあるぞと言うことで.

どうでしょうか ?

----------
安葉 浩一
y...@ntt-it.co.jp