当前位置:首页 » 文件管理 » 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...

热点内容
gcc编译时做了什么工作 发布:2024-05-12 18:16:10 浏览:985
刀片机服务器ip怎么配置 发布:2024-05-12 04:28:35 浏览:526
存储系列视频 发布:2024-05-12 04:01:27 浏览:148
oracle数据库去重 发布:2024-05-12 04:00:53 浏览:774
配置减肥餐需要哪些条件 发布:2024-05-12 03:56:36 浏览:513
电视节目需要什么配置电脑 发布:2024-05-12 03:51:26 浏览:45
安卓怎么设置不被拦截 发布:2024-05-12 03:51:26 浏览:567
python目录下的文件名 发布:2024-05-12 03:51:02 浏览:104
c语言怎么编译输出满屏的爱心 发布:2024-05-12 03:39:22 浏览:182
androidlistview间距 发布:2024-05-12 03:39:19 浏览:13