mfc 如何获取应用程序的根目录名称

mfc 如何获取应用程序的根目录名称,第1张

如果从字符串角度分析这个问题的话,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行的所在文件夹路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9877787.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存