码迷,mamicode.com
首页 > 其他好文 > 详细

打开文件夹

时间:2015-09-10 13:07:45      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:

void C文件Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CString strFolderPath(_T(""));
TCHAR szPath[_MAX_PATH];

BROWSEINFO bi;
bi.hwndOwner = GetSafeHwnd();
bi.pidlRoot = NULL;
bi.lpszTitle = _T("选择文件夹");
bi.pszDisplayName = szPath;
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = NULL;

LPITEMIDLIST pItemIDList = SHBrowseForFolder(&bi);

if(pItemIDList)
{
if(SHGetPathFromIDList(pItemIDList,szPath))
{
strFolderPath = szPath;
}

// 防止内存泄露,要使用IMalloc接口
IMalloc* pMalloc;
if( SHGetMalloc(&pMalloc) != NOERROR )
{
TRACE(_T("无法取得外壳程序的IMalloc接口\n"));
}

pMalloc->Free(pItemIDList);
if(pMalloc)
pMalloc->Release();
}
else
{
strFolderPath = _T(""); // 文件夹路径为空
}

ScanDiskFile(strFolderPath);

}


void C文件Dlg::ScanDiskFile(const CString& strPath)
{
CFileFind find;
CString strTemp = strPath;
CString strDirectory = strPath + _T("\\") + _T("\\*.*");
CString strFile;

vector<CString> m_vStrAllFiles; // zm容器

BOOL IsFind = find.FindFile(strDirectory);
while(IsFind )
{
IsFind=find.FindNextFile();

// 如果是"." 则不扫描
if(find.IsDots())
continue;
// 如果是是目录,继续扫描此目录
else if(find.IsDirectory())
{
strFile = find.GetFileName();
strTemp = strTemp + _T("\\") + strFile;
ScanDiskFile(strTemp);
}
// 文件
else
{
strFile = find.GetFileName();

// 此处也可以根据相应的扩展名来设置

// ......

m_vStrAllFiles.push_back(strFile);
}
}

find.Close();

//以下这三行是我测试用的,你可以把它们删掉

CString temp;
//temp.Format("i = %d", m_vStrAllFiles.size());
MessageBox(temp);
}

打开文件夹

标签:

原文地址:http://www.cnblogs.com/zzh123/p/4797294.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!