如果从字符串角度分析这个问题的话,d:\\shipin\\r001先看最后一个 \ 出现在什么位置,从这个位置往后的字符串就是结果
mfc中调用CFileDialog的返回文件目录后得到d:\\shipin\\r001,其值应该是个CString,CString转换成字符串就可以了
把以下代码放到Win32控制台运行,亲测可用:
#include <windowsh>
#define FILEILTER "" //查找条件,例如查找exe格式的那么就用exe,当然也可以直接用setupexe
#include "iostreamh"
#include "stdioh"
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 (wfdcFileName[0] == '')
continue; // 过滤这两个目录
if (wfddwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
TCHAR szFile[MAX_PATH];
if (IsRoot(lpszPath))
wsprintf(szFile, "%s%s", lpszPath, wfdcFileName);
else
{
wsprintf(szFile, "%s\\%s", lpszPath, wfdcFileName);
FindInAll(szFile); // 如果找到的是目录,则进入此目录进行递归
}
}
else
{
TCHAR szFile[MAX_PATH];
if (IsRoot(lpszPath))
{
wsprintf(szFile, "%s%s", lpszPath, wfdcFileName);
}
else
{
wsprintf(szFile, "%s\\%s", lpszPath, wfdcFileName);
printf("%s\n",szFile);
}
// 对文件进行 *** 作
}
} while (FindNextFile(hFind, &wfd));
FindClose(hFind); // 关闭查找句柄
}
int main(int argc, char argv[])
{
FindInAll("E:"); //这里设置目录为E:,请根据需要更改
return 0;
}
你的意思是不是,ListCtrl里面有一列是显示路径的
关联成员变量: m_clist
CString strPath; //路径
strPath = m_clistGetItemText(nRow,nColumn); //nRow 行号,nColumn列号
TCHAR exeFullPath[MAX_PATH]; // MAX_PATH
GetModuleFileName(NULL,exeFullPath,MAX_PATH);//得到程序模块名称,全路径
也就是当前运行程序的全路径
GetModuleFileName函数原型
DWORD GetModuleFileName(
HMODULE hModule, // handle to module。将要得到的模块的句柄。如果是当前模块,NULL
LPTSTR lpFilename, // path buffer 得到的文件名。
DWORD nSize // size of buffer 一般MAX_PATH就可以了
);
void CXXXDlg::SearchFiles(CString strMusicFolder)
{
CFileFind ff;
strMusicFolder += _T("\\");
strMusicFolder += _T("");
BOOL res = ffFindFile(strMusicFolder);
while (res)
{
res = ffFindNextFile();
if (!ffIsDirectory() && !ffIsDots())
{
afxMessageBox(ffGetFilePath());
}
}
ffClose();
}
已经获取了CString类型的文件路径,一般推荐使用CFile或者CStdioFile进行文件 *** 作。
fread也是可以的,打开的文件名参数使用cstringGetBuffer(0)就可以了,不过注意工程最好不要是UNICODE模式,这种模式下fread会有一些麻烦。
以上就是关于mfc 如何获取应用程序的根目录名称全部的内容,包括:mfc 如何获取应用程序的根目录名称、MFC中遍历当前目录下的文件和文件夹,然后将所有找到的文件夹的名字提取出来、MFC 如何获取ListCtrl行的所在文件夹路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)