遍歷文件夾
void EnumerateFiles(CStringArray &strArray)
{
WIN32_FIND_DATA fd;
HANDLE hFind = ::FindFirstFile(_T("*.*"), &fd);
if (hFind != INVALID_HANDLE_VALUE)
{
do
{
// 如果爲目錄
if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
// 如果不爲當前目錄.或上一層目錄..
if (_tcscmp(fd.cFileName, _T(".")) && _tcscmp(fd.cFileName, _T("..")))
{
::SetCurrentDirectory(fd.cFileName); // 進入該目錄
EnumerateFiles(strArray); // 遞歸枚舉
::SetCurrentDirectory(_T("..")); // 返回該目錄上一層目錄
}
}
// 如果爲文件
else
{
CString strDir;
TCHAR lpDir[MAX_PATH];
::GetCurrentDirectory(MAX_PATH, lpDir);
strDir = lpDir;
if ( strDir.Right(1) != _T("\\") )
{
strDir += _T("\\");
}
strDir += fd.cFileName;
strArray.Add(strDir);
}
} while (::FindNextFile(hFind, &fd));
::FindClose(hFind);
}
}