mfc读取文件夹内所有图片

heart531diandian 2011-04-21 01:04:19
我用下面这两个函数,点击按钮出现浏览文件夹界面,然后我选定文件夹,然后点浏览界面的打开按钮,点击完以后浏览框并没有消失,这样正常吗? 我觉得如果读取成功的话,浏览框应该自动关闭啊,我在浏览打开的界面里选取了其中一个图片双击,浏览框就能消失,但是我现在是选文件夹读取所有图片啊

void CTestDlg::OnButton1()
{

CFileDialog mFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,
"所有文件(*.*)|*.*", NULL/*AfxGetMainWnd()*/);

if(mFileDlg.DoModal()==IDOK)
{
CString strPathName=mFileDlg.GetPathName();
CString strDir = strPathName.Left(strPathName.ReverseFind('\\'));
std::vector<CString> vecFile;
OnTraverseFolder( strDir,vecFile );
}
}




void CTestDlg::OnTraverseFolder(const CString& strDir,std::vector<CString>& vecFile)
{
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);
}
...全文
276 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
heart531diandian 2011-04-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mousecarrot 的回复:]
C/C++ code

#include <Windows.h>
#include <ShlObj.h>
int main()
{
BROWSEINFO bi;
ZeroMemory(&bi,sizeof(BROWSEINFO));
LPMALLOC pMalloc;
LPITEMIDLIST pidl = SHBrowseForFolde……
[/Quote]

我是用mfc 我现在就会在按钮里弄函数您能帮我把我那段代码改一下吗? 谢谢您了

效果就是一点击按钮 然后浏览到文件夹 一点击文件夹 文件夹内的图片就全都读取过来了
酒红色的泪 2011-04-21
  • 打赏
  • 举报
回复

#include <Windows.h>
#include <ShlObj.h>
int main()
{
BROWSEINFO bi;
ZeroMemory(&bi,sizeof(BROWSEINFO));
LPMALLOC pMalloc;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
TCHAR * path = new TCHAR[MAX_PATH];
if(pidl != NULL)
{
SHGetPathFromIDList(pidl,path);
MessageBox(NULL,path,TEXT("Choose"),MB_OK);
if(SUCCEEDED(SHGetMalloc(&pMalloc)))
{
pMalloc->Free(pidl);
pMalloc->Release();
}
}
else
{
MessageBox(NULL,TEXT("选择为空"),TEXT("Choose"),MB_OK);
}
delete path;//
}

酒红色的泪 2011-04-21
  • 打赏
  • 举报
回复
CFileDialog 是选择文件用的,用SHBrowseForFolder选择文件夹

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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