Macr0s
Зарегистрирован: 17.08.2004 Сообщения: 5 Откуда: Энгельс
|
Добавлено: Вт Авг 17 2004 12:34 Заголовок сообщения: |
|
|
Вопрос немного некорректный...
если имеется в виду поиск файлов, то есть API - FindFirstFile & FindNextFile & FindClose. чтобы пройтись по всем папкам и файлам надо юзать эти функции в рекурсии. пример использования:
Код: |
void CfindfilesDlg::FindAll_Api(char* Path)
{
WIN32_FIND_DATA fd;
char* fname=new char[MAX_PATH];
fname=strcpy(fname,Path);
strcat(fname,"\\*.*");
HANDLE sh=FindFirstFile(fname,&fd);
if(sh==INVALID_HANDLE_VALUE) return;
while(FindNextFile(sh,&fd))
{
char* fullpath=new char[MAX_PATH];
if(PathIsRoot(Path))sprintf(fullpath,"%s%s",Path,fd.cFileName);
else sprintf(fullpath,"%s\\%s",Path,fd.cFileName);
if(!strcmpi(fd.cFileName,"."))continue;
if(!strcmpi(fd.cFileName,".."))continue;
if(fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
{
FindAll_Api(fullpath);
continue;
}
lbFiles.AddString(fullpath);
delete[] fullpath;
fullpath=NULL;
}
delete[] fname;
}
|
Есть похожая фишка в MFC: класс CFileFind
Код: |
void CfindfilesDlg::FindAll_mfc(CString path)
{
CFileFind ff;
bool is=ff.FindFile(path+"\\*.*");
while(is)
{
is=ff.FindNextFile();
CString _path=ff.GetFilePath();
bool isDir=ff.IsDirectory();
if(ff.IsDots()) continue;
if(isDir) FindAll_mfc(_path);
else lbFiles.AddString(_path);
}
}
|
если имелся ввиду не поиск файлов, то или я торможу или одно из двух. |
|