#include <afxtempl.h>
{
WIN32_FIND_DATA fdata = {0};
_chdir(path.GetBuffer(0));
HANDLE hSearch = FindFirstFile(_T("*"),&fdata);
if(hSearch == INVALID_HANDLE_VALUE)
return;
CString FileName;
if(fdata.cFileName[0]!='.')
{
CString childpath;
childpath.Format("%s\\%s",path,fdata.cFileName);
SetCurrentDirectory(childpath.GetBuffer(0));
GetAllFiles(childpath,filenamelist,headpos);
SetCurrentDirectory("..");
}
}
else
{
FileName.Format("%s\\%s",path,fdata.cFileName);
filenamelist.InsertAfter(headpos,FileName);
}
{
if(fdata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
if(fdata.cFileName[0]!='.')
{
CString childpath;
childpath.Format("%s\\%s",path,fdata.cFileName);
SetCurrentDirectory(childpath.GetBuffer(0));
GetAllFiles(childpath,filenamelist,headpos);
SetCurrentDirectory("..");
}
}
else
{
FileName.Format("%s\\%s",path,fdata.cFileName);
filenamelist.InsertAfter(headpos,FileName);
}
}
StringList FileNameList;
CString Head = ".";
POSITION pos = FileNameList.AddHead(Head);
GetAllFiles(Path,FileNameList,pos);
int nCount = FileNameList.GetCount();
for (int i=1;i<nCount;i++)
{
POSITION pos = FileNameList.FindIndex(i);
CString FileName = FileNameList.GetAt(pos);
cout << FileName.GetBuffer(0) << endl;
}
typedef CList
<CString,CString&> StringList; void GetAllFiles(CString path,StringList& filenamelist, POSITION headpos){
WIN32_FIND_DATA fdata = {0};
_chdir(path.GetBuffer(0));
HANDLE hSearch = FindFirstFile(_T("*"),&fdata);
if(hSearch == INVALID_HANDLE_VALUE)
return;
CString FileName;
if(fdata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
if(fdata.cFileName[0]!='.')
{
CString childpath;
childpath.Format("%s\\%s",path,fdata.cFileName);
SetCurrentDirectory(childpath.GetBuffer(0));
GetAllFiles(childpath,filenamelist,headpos);
SetCurrentDirectory("..");
}
}
else
{
FileName.Format("%s\\%s",path,fdata.cFileName);
filenamelist.InsertAfter(headpos,FileName);
}
while(FindNextFile(hSearch, &fdata))
{
if(fdata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
if(fdata.cFileName[0]!='.')
{
CString childpath;
childpath.Format("%s\\%s",path,fdata.cFileName);
SetCurrentDirectory(childpath.GetBuffer(0));
GetAllFiles(childpath,filenamelist,headpos);
SetCurrentDirectory("..");
}
}
else
{
FileName.Format("%s\\%s",path,fdata.cFileName);
filenamelist.InsertAfter(headpos,FileName);
}
}
FindClose(hSearch);
}
StringList FileNameList;
CString Head = ".";
POSITION pos = FileNameList.AddHead(Head);
GetAllFiles(Path,FileNameList,pos);
int nCount = FileNameList.GetCount();
for (int i=1;i<nCount;i++)
{
POSITION pos = FileNameList.FindIndex(i);
CString FileName = FileNameList.GetAt(pos);
cout << FileName.GetBuffer(0) << endl;
}