mfc找到文件夹,并读取文件夹内的所有图片

heart531tz 2011-04-21 10:50:45
我现在创建了一个对话框,对话框上有一个按钮,想通过点击找到按钮找到文件夹,并读取文件夹内的所有文件

这是我在网上找到的两段代码,被我放在了同一个按钮响应函数中, 分割线以上的代码是浏览文件夹,分割线以下是遍历读取所有文件的代码, 其中有一句是我加的,因为我不懂这两段代码,不知道怎么把这两段代码结合,需要修改哪里?
对了,我要读取的文件夹内的文件是jpg图片文件


void CTestDlg::OnTraverseFolder(const CString& strDir, vector<CString>& vecFile)
{
// TODO: Add your control notification handler code here

CString m_strPathName, m_strFileName; //这个定义是我自己后加的
CFileDialog mFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,
"所有文件(*.*)", NULL/*AfxGetMainWnd()*/);
if(mFileDlg.DoModal()==IDOK)
{
m_strPathName=mFileDlg.GetPathName();
m_strFileName=mFileDlg.GetFileName();
}


----------------------------------------------------------------------
WIN32_FIND_DATA FindFileData;
CString strDirTmp;
strDirTmp = strDir;
strDirTmp += "\\*.*";
HANDLE hFind=::FindFirstFile(strDirTmp,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind)
{
return;
}
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!= _T('.'))
{
strDirTmp = strDir;
strDirTmp += "\\";
strDirTmp += FindFileData.cFileName;
OnTraverseFolder(strDirTmp,vecFile) ;
}
}
else
{
strDirTmp = strDir;
strDirTmp += "\\";
strDirTmp += FindFileData.cFileName;
vecFile.push_back(strDirTmp);
}
if(!FindNextFile(hFind,&FindFileData)) break;
}
FindClose(hFind);
}
...全文
343 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
heart531tz 2011-04-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 oyljerry 的回复:]

CFileDialog 获取选择的目录

然后你用第二段代码传递进去这个目录来遍历文件.
[/Quote]

我实在是新手,能不能帮我把代码组合一下啊,一个按钮够用吗?
Eleven 2011-04-21
  • 打赏
  • 举报
回复
void Recurse(LPCTSTR pstr)
{
CFileFind finder;

// build a string with wildcards
CString strWildcard(pstr);
strWildcard += _T("\\*.*");

// start working for files
BOOL bWorking = finder.FindFile(strWildcard);

while (bWorking)
{
bWorking = finder.FindNextFile();

// skip . and .. files; otherwise, we'd
// recur infinitely!

if (finder.IsDots())
continue;

// if it's a directory, recursively search it
CString str = finder.GetFilePath();
if (finder.IsDirectory())
{

Recurse(str);
}
else
{
if(0 == str.Right(3).CompareNoCase(_T("jpg")))
TRACE(_T("%s\n"), (LPCTSTR)str);
}
}

finder.Close();
}

void PrintDirs()
{
Recurse(_T("F:"));
}
oyljerry 2011-04-21
  • 打赏
  • 举报
回复
CFileDialog 获取选择的目录

然后你用第二段代码传递进去这个目录来遍历文件.

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧