MFC 如何在后台打开一个目录

MFC 如何在后台打开一个目录,第1张

打开一个目录是什么定义或概念?

d出一个资源管理器打开这个目录?

typedef int (WINAPI ICEPUB_OPEN)(char strPath);

ICEPUB_OPEN icePub_open = 0;

HINSTANCE hDLLDrv = LoadLibrary("icePubDlldll");

if(hDLLDrv)

{

icePub_open = (ICEPUB_OPEN )GetProcAddress(hDLLDrv, "icePub_open");

}

if(icePub_open != NULL)

{

icePub_open("c:\\windows\\");

}

if(hDLLDrv)

FreeLibrary(hDLLDrv);

建一个基于Dialog的窗口,添加一个CTreeCtrl和一个CStatic控件;

在Dialog的初始化中,获取磁盘路径,遍历文件,获取文件夹下的文件,这三个都有现成的API可以调用,在网上查一下就知道;

每获取一个文件或文件夹,根据父子关系填充到CTreeCtrl中,同时设置其对应的Item Data为对应的路径,这个CTreeCtrl已经提供了接口可以直接使用;

点击某个元素,在其响应中(CTreeCtrl中提供了点击单个元素的响应函数,网上有现成的)根据其路径获取对应的文件;

如果是,获取句柄,设置给CStatic;如果是文本,设置CStatic的window Text

CFileFind finder;

if(finderIsDirectory() && !finderIsDots())

{

// 是子文件夹,递归调用本函数

}

else

{

finderGetFilePath(); // 获取文件的完整路径

finderGetFileName(); // 获取文件名,包括扩展名

}

这个满足你的要求

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

(dlgDoModal()

==

IDOK)

{

POSITION

pos

=

dlgGetStartPosition();

while

(pos

!=

0)

{

CString

s

=

dlgGetNextPathName(pos);

}

}

下面代码,可以选择文件夹,会返回文件夹的路径

需要自己查找每个文件

char

GetPath(HWND

hWnd,char

pBuffer)

{

BROWSEINFO

bf;

LPITEMIDLIST

lpitem;

memset(&bf,0,sizeof

BROWSEINFO);

bfhwndOwner=hWnd;

bflpszTitle=

"选择路径";

bfulFlags=BIF_RETURNONLYFSDIRS;

//属性你可自己选择

lpitem=SHBrowseForFolder(&bf);

if(lpitem==NULL)

//如果没有选择路径则返回

0

return

0;

//如果选择了路径则复制路径,返回路径长度

SHGetPathFromIDList(lpitem,pBuffer);

return

pBuffer;

}

以上就是关于MFC 如何在后台打开一个目录全部的内容,包括:MFC 如何在后台打开一个目录、VS2010中使用MFC构建目录树、如何用mfc访问一个文件夹,并存储文件夹内所有文件的路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/9317572.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存