當前位置:首頁 » 文件管理 » mfc打開文件夾

mfc打開文件夾

發布時間: 2022-12-08 18:05:08

A. 如何用mfc訪問一個文件夾,並存儲文件夾內所有文件的路徑

CFileFind finder;
if(finder.IsDirectory() && !finder.IsDots())
{
// 是子文件夾,遞歸調用本函數
}
else
{
finder.GetFilePath(); // 獲取文件的完整路徑
finder.GetFileName(); // 獲取文件名,包括擴展名
}

B. mfc怎麼實現打開文件夾

voidCXXXDlg::OpenFolder()
{
BROWSEINFObi;
ZeroMemory(&bi,sizeof(BROWSEINFO));
//添加提示語句
bi.lpszTitle=_T("請選擇文件夾");
//添加"新建文件夾項"和"編輯框"
bi.ulFlags=BIF_NEWDIALOGSTYLE|BIF_EDITBOX;
//顯示一個對話框讓讓用戶選擇文件夾
LPITEMIDLISTpidl=SHBrowseForFolder(&bi);
charszFolder[_MAX_PATH];
memset(szFolder,0,sizeof(szFolder));
CStringstrFolder=_T("");
if(pidl!=NULL)
{
SHGetPathFromIDList(pidl,szFolder);
//保存文件夾路徑存
strFolder.Format(_T("%s"),szFolder);
afxMessageBox(strFolder);
}
else
{
return;
}
}

C. MFC點擊按鈕打開對話框選擇文件夾(不是文件)

選擇所選擇的文件夾,獲取文件夾的路徑:
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('');
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();
//
不要忘記關閉

D. 給一個文件夾路徑D:\Data,裡面有很多個文件,怎麼用MFC程序打開這個文件夾並遍歷文件夾下的所有文件

MFC下,還是用CFileFind類比較方便。

CFileFind ff;
CString strUDDir += "d:\\data\\*.*";
BOOL res = ff.FindFile(strUDDir);
while(res)
{
res = ff.FindNextFile();
//不遍歷子目錄
if(!ff.IsDirectory() && !ff.IsDots())
{
CString strFile = ff.GetFileName();

…// 在這里寫需要的代碼
}
}
ff.Close(); // 不要忘記關閉

E. MFC按鈕打開選擇一個文件夾,然後獲得文件夾中的所有txt文件名稱!

這個滿足你的要求
s返迴文件路徑
#define
DLG_FILTER
"ALL
Files
(*.*)|*.*||"
#define
DLG_EXT
"*
"
CFileDialog
dlg(TRUE,
_T(DLG_EXT),
NULL,
OFN_HIDEREADONLY
|
OFN_OVERWRITEPROMPT
|
OFN_ALLOWMULTISELECT,
_T(DLG_FILTER));
if
(dlg.DoModal()
==
IDOK)
{
POSITION
pos
=
dlg.GetStartPosition();
while
(pos
!=
0)
{
CString
s
=
dlg.GetNextPathName(pos);
}
}
下面代碼,可以選擇文件夾,會返迴文件夾的路徑
需要自己查找每個文件
char*
GetPath(HWND
hWnd,char*
pBuffer)
{
BROWSEINFO
bf;
LPITEMIDLIST
lpitem;
memset(&bf,0,sizeof
BROWSEINFO);
bf.hwndOwner=hWnd;
bf.lpszTitle=
"選擇路徑";
bf.ulFlags=BIF_RETURNONLYFSDIRS;
//屬性你可自己選擇
lpitem=SHBrowseForFolder(&bf);
if(lpitem==NULL)
//如果沒有選擇路徑則返回
0
return
0;
//如果選擇了路徑則復制路徑,返迴路徑長度
SHGetPathFromIDList(lpitem,pBuffer);
return
pBuffer;
}

熱點內容
壓縮後的 發布:2025-07-27 19:39:22 瀏覽:579
怎麼改服務密碼 發布:2025-07-27 19:17:16 瀏覽:637
python小項目源碼 發布:2025-07-27 19:12:19 瀏覽:369
python畫矩形 發布:2025-07-27 19:07:31 瀏覽:995
小米盒子怎麼看配置 發布:2025-07-27 19:00:34 瀏覽:838
百度打開密碼是多少 發布:2025-07-27 18:53:11 瀏覽:23
華為方舟編譯器免費使用 發布:2025-07-27 18:53:08 瀏覽:193
組態王與資料庫連接 發布:2025-07-27 18:52:29 瀏覽:308
dhcp配置錯誤怎麼修復 發布:2025-07-27 18:41:09 瀏覽:819
我的世界tis伺服器的版本 發布:2025-07-27 18:35:50 瀏覽:554