MFC点击按钮打开对话框选择文件夹(不是文件)
我想取得一个文件夹下所有的.mdb文件,取出一个我知道用CFileDialog。我的意思是弹出对话框后,我只能选择文件夹,然后得到在这个文件夹下面所有的.mdb的总路径放...
我想取得一个文件夹下所有的.mdb文件,取出一个我知道用CFileDialog。我的意思是弹出对话框后,我只能选择文件夹,然后得到在这个文件夹下面所有的.mdb的总路径放入一个数组中。求大神们帮忙
展开
2个回答
展开全部
选择所选择的文件夹,获取文件夹的路径:
CString m_FileDir;
BROWSEINFO bi;
ZeroMemory(&bi, sizeof(BROWSEINFO));
bi.hwndOwner = m_hWnd;
bi.ulFlags = BIF_RETURNONLYFSDIRS;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
BOOL bRet = FALSE;
TCHAR szFolder[MAX_PATH*2];
szFolder[0] = _T('\0');
if (pidl)
{
if (SHGetPathFromIDList(pidl, szFolder))
bRet = TRUE;
IMalloc *pMalloc = NULL;
if (SUCCEEDED(SHGetMalloc(&pMalloc))
&& pMalloc)
{
pMalloc->Free(pidl);
pMalloc->Release();
}
}
m_FileDir = szFolder;//选择的文件夹路径
查找所有MDB文件(记录数组自己写吧)
CFileFind ff;
BOOL res = ff.FindFile(m_FileDir+"*.mdb");
while(res)
{
res = ff.FindNextFile();
//不遍历子目录
if(!ff.IsDirectory() && !ff.IsDots())
{
CString strFile = ff.GetFileName();
…// 在这里写需要的代码
}
}
ff.Close(); // 不要忘记关闭
CString m_FileDir;
BROWSEINFO bi;
ZeroMemory(&bi, sizeof(BROWSEINFO));
bi.hwndOwner = m_hWnd;
bi.ulFlags = BIF_RETURNONLYFSDIRS;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
BOOL bRet = FALSE;
TCHAR szFolder[MAX_PATH*2];
szFolder[0] = _T('\0');
if (pidl)
{
if (SHGetPathFromIDList(pidl, szFolder))
bRet = TRUE;
IMalloc *pMalloc = NULL;
if (SUCCEEDED(SHGetMalloc(&pMalloc))
&& pMalloc)
{
pMalloc->Free(pidl);
pMalloc->Release();
}
}
m_FileDir = szFolder;//选择的文件夹路径
查找所有MDB文件(记录数组自己写吧)
CFileFind ff;
BOOL res = ff.FindFile(m_FileDir+"*.mdb");
while(res)
{
res = ff.FindNextFile();
//不遍历子目录
if(!ff.IsDirectory() && !ff.IsDots())
{
CString strFile = ff.GetFileName();
…// 在这里写需要的代码
}
}
ff.Close(); // 不要忘记关闭
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询