It's pretty easy. Something like: CStringList dirs, files; CString dir; CFileFind ff; BOOL ok; dirs.AddTail("c:\\work\\lisp"); while (!dirs.IsEmpty()) { dir = dirs.RemoveHead(); if (ff.FindFile( dir + "\\*.*" )) { do { ok = ff.FindNextFile(); if (ff.IsDots()) continue; if (ff.IsDirectory()) { dirs.AddTail( ff.GetFilePath() ); continue; } files.AddTail( ff.GetFilePath() ); }while (ok); } } -- Joel Lucsy