當前位置:首頁 » 文件管理 » mfc獲取文件夾名

mfc獲取文件夾名

發布時間: 2022-06-22 11:58:24

① 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;
}

② MFC獲取指定文件夾文件目錄

在MFC中,使用CFileFind類,可以枚舉一個目錄下的所有文件和子目錄。

示例:

voidListFolder(constCString&sPath)
{
CFileFindff;
BOOLbFound=ff.FindFile(sPath+"\*.*");
while(bFound)
{
bFound=ff.FindNextFile();
if(ff.IsDirectory())//是目錄
{
if(!ff.IsDots())//不是本級目錄或父目錄(.和..)
ListFolder(ff.GetFilePath());//遞歸子目錄
}
else
{
AfxMessageBox("文件:"+ff.GetFilePath());
}
}
ff.Close();
}

③ MFC中獲取文件名及路徑實現方法——DirDialog類中的BrowseCtrlCallback注釋翻譯

int__stdcallCDirDialog::BrowseCtrlCallback(HWNDhwnd,UINTuMsg,LPARAMlParam,LPARAMlpData)
{
//bInfo.lParam=(LPARAM)this;這行代碼將CDirDialog對象通過lpData傳入到回調函數BrowseCtrlCallback
CDirDialog*pDirDialogObj=(CDirDialog*)lpData;
//瀏覽目錄的對話框已初始化完成後會回調BrowseCtrlCallback,uMsg等於BFFM_INITIALIZED
if(uMsg==BFFM_INITIALIZED)
{
//如果指定了默認目錄,給hwnd(瀏覽目錄對話框)發送BFFM_SETSELECTION消息,用於自動選中該默認目錄
if(!pDirDialogObj->m_strSelDir.IsEmpty())
::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,(LPARAM)(LPCTSTR)(pDirDialogObj->m_strSelDir));
//如果CDirDialog的m_strWindowTitle不是空字元串,那麼將瀏覽目錄對話框的窗口標題設置為m_strWindowTitle
if(!pDirDialogObj->m_strWindowTitle.IsEmpty())
::SetWindowText(hwnd,(LPCTSTR)pDirDialogObj->m_strWindowTitle);
}
//瀏覽目錄的對話框內用戶選擇的目錄變化時,回調BrowseCtrlCallback,uMsg等於BFFM_SELCHANGED
elseif(uMsg==BFFM_SELCHANGED)
{
//BFFM_SELCHANGED消息中,lpData指向新選擇的目錄的PIDL
LPITEMIDLISTpidl=(LPITEMIDLIST)lParam;
charselection[MAX_PATH];
//調用SHGetPathFromIDList從PIDL轉換為文件系統路徑字元串
if(!::SHGetPathFromIDList(pidl,selection))
selection[0]='';
CStringcsStatusText;
//調用SelChanged函數,由CDirDialog或其派生類重載的SelChanged函數來決定是否允許選擇該目錄
BOOLbOk=pDirDialogObj->SelChanged(selection,csStatusText);
if(pDirDialogObj->m_bStatus)
//修改瀏覽目錄的對話框的狀態欄內容為新選擇的目錄路徑
::SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)(LPCSTR)csStatusText);
//如果SelChanged返回TRUE,表示允許選擇該目錄,於是啟用"確定"按鈕,否則禁用。
::SendMessage(hwnd,BFFM_ENABLEOK,0,bOk);
}
return0;
}

④ MFC中遍歷當前目錄下的文件和文件夾,然後將所有找到的文件夾的名字提取出來

把以下代碼放到Win32控制台運行,親測可用:

#include <windows.h>
#define FILEILTER "*.*" //查找條件,例如查找.exe格式的那麼就用*.exe,當然也可以直接用setup.exe
#include "iostream.h"
#include "stdio.h"

BOOL IsRoot(LPCTSTR lpszPath)
{
TCHAR szRoot[4];
wsprintf(szRoot, "%c:\\", lpszPath[0]);
return (lstrcmp(szRoot, lpszPath) == 0);
}

void FindInAll(LPCTSTR lpszPath)
{
TCHAR szFind[MAX_PATH];
lstrcpy(szFind, lpszPath);
if (!IsRoot(szFind))
lstrcat(szFind, "\\");
lstrcat(szFind, FILEILTER); // 找所有文件
WIN32_FIND_DATA wfd;
HANDLE hFind = FindFirstFile(szFind, &wfd);
if (hFind == INVALID_HANDLE_VALUE) // 如果沒有找到或查找失敗
return;

do
{
if (wfd.cFileName[0] == '.')
continue; // 過濾這兩個目錄
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
TCHAR szFile[MAX_PATH];
if (IsRoot(lpszPath))
wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);
else
{
wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);
FindInAll(szFile); // 如果找到的是目錄,則進入此目錄進行遞歸
}
}
else
{
TCHAR szFile[MAX_PATH];
if (IsRoot(lpszPath))
{
wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);
}
else
{
wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);
printf("%s\n",szFile);
}
// 對文件進行操作
}
} while (FindNextFile(hFind, &wfd));
FindClose(hFind); // 關閉查找句柄

}
int main(int argc, char* argv[])
{
FindInAll("E:"); //這里設置目錄為E:,請根據需要更改
return 0;
}

⑤ 如何在mfc中實現打開一個文件,獲取文件名

這個滿足你的要求s返迴文件路徑#defineDLG_FILTER"ALLFiles(*.*)|*.*||"#defineDLG_EXT"*"CFileDialogdlg(TRUE,_T(DLG_EXT),NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,_T(DLG_FILTER));if(dlg.DoModal()==IDOK){POSITIONpos=dlg.GetStartPosition();while(pos!=0){CStrings=dlg.GetNextPathName(pos);}}下面代碼,可以選擇文件夾,會返迴文件夾的路徑需要自己查找每個文件char*GetPath(HWNDhWnd,char*pBuffer){BROWSEINFObf;LPITEMIDLISTlpitem;memset(&bf,0,sizeofBROWSEINFO);bf.hwndOwner=hWnd;bf.lpszTitle="選擇路徑";bf.ulFlags=BIF_RETURNONLYFSDIRS;//屬性你可自己選擇lpitem=SHBrowseForFolder(&bf);if(lpitem==NULL)//如果沒有選擇路徑則返回0return0;//如果選擇了路徑則復制路徑,返迴路徑長度SHGetPathFromIDList(lpitem,pBuffer);returnpBuffer;}

⑥ MFC里單擊菜單欄中的「打開」後,出來一個對話框,怎麼獲取文件的文件名,那個函數在哪裡

為TRUE時是打開對話框,為FALSE時是保存對話框
CFileDialog dlg(TRUE, ".txt", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "文本文件 (*.txt)|*.txt||");

if(dlg.DoModal() == IDOK)
{
//獲得文件名
CString szFileName = dlg.GetPathName();

//下面添加對文件的操作代碼
}

⑦ MFC 中如何查看磁碟(比如D盤)裡面的東西,獲取文件名,包括文件夾名

void CFindDlg::FileFind(CString szPath, int &fcount, int &dcount)
{
if(szPath.Right(1) == _T("\\"))
szPath += _T("*.*");
else
szPath += _T("\\*.*");

CFileFind find;
BOOL bFind = find.FindFile(szPath);
while(bFind)
{
bFind = find.FindNextFile();
if(!find.IsDots())
{
m_list.AddString( find.GetFilePath() ); // 添加文件(夾)路徑到列表控制項
if(find.IsDirectory())
dcount++; // 文件夾數量
else
fcount++; // 文件數量
}
if(!find.IsDots() && find.IsDirectory())
{
FileFind(find.GetFilePath(), fcount, dcount);
}
}
}

⑧ C++ MFC獲取文件名字(包括後綴名)以下做法是否正確

GetFileName 只獲取文件名。
如果要得到包含全路徑的文件名要用 GetPathName
另外你想把文件名傳出來(供別的函數用),file_name 應當放在 .h 文件里,可以在初始化時開單元。

我的一個程序取文件名用下面方法,通過實參傳遞:
void CStripDoc::Get_Dac_Filename(CString *name)
{
CString str;
char BASED_CODE filters[] = "DAC file (*.dac)|*.dac||";
CWnd* parentWnd;
parentWnd=parentWnd->GetActiveWindow();
CFileDialog openDlg(TRUE,NULL,NULL,OFN_FILEMUSTEXIST,filters,parentWnd);
if(openDlg.DoModal()==IDOK)
{
*name = openDlg.GetPathName();
}
}

⑨ MFC如何獲取一個文件夾的名字

可以用CString進行處理

⑩ mfc怎麼讀取文件夾中文件的名字

void DelFiles(CString& strDirPath, CString strFileName, BOOL bDelAll) { CFileFind FileFinder; strDirPath = strDirPath + _T("\\"); CString strFilePath = strDirPath + strFileName; while (TRUE) { if (FileFinder.FindFile(strFilePat...

熱點內容
c語言實現數據結構的演算法 發布:2025-03-21 14:35:55 瀏覽:414
androidphp最佳實踐pdf 發布:2025-03-21 14:33:44 瀏覽:728
哪裡下安卓版60秒 發布:2025-03-21 14:32:06 瀏覽:291
javarsa分段加密 發布:2025-03-21 14:31:57 瀏覽:511
中國式家長怎麼換伺服器 發布:2025-03-21 14:21:58 瀏覽:846
腳本守約 發布:2025-03-21 14:20:55 瀏覽:102
安卓手機清理存儲空間會怎麼樣 發布:2025-03-21 14:20:17 瀏覽:25
平板怎麼給照片加密 發布:2025-03-21 14:20:12 瀏覽:1001
安卓換手機傳照片用什麼最快 發布:2025-03-21 14:17:56 瀏覽:792
學數控編程大概多少錢 發布:2025-03-21 14:09:28 瀏覽:759