
打开一个目录是什么定义或概念?
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访问一个文件夹,并存储文件夹内所有文件的路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)