怎样浏览并取得某个目录的路径而不需要指定打开某个文件?

zzPandazz 2010-09-14 12:27:28
就像WINRAR那样的解压到...
...全文
126 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuchongjike 2010-09-14
  • 打赏
  • 举报
回复
SHBrowseForFolder()
gameslq 2010-09-14
  • 打赏
  • 举报
回复
直接调用选则系统目录的函数:

WINSHELLAPI LPITEMIDLIST WINAPI SHBrowseForFolder(LPBROWSEINFO lpbi);

wjhuangjin 2010-09-14
  • 打赏
  • 举报
回复
WINSHELLAPI LPITEMIDLIST WINAPI SHBrowseForFolder(
LPBROWSEINFO lpbi
);

//获取用户设定的目录
void CSeverDefineDlg::OnBtBrows()
{
BROWSEINFO bi;
char dispname[MAX_PATH], path[MAX_PATH];
ITEMIDLIST * pidl;

bi.hwndOwner = 0;
bi.pidlRoot = 0;

bi.pszDisplayName = dispname;
bi.lpszTitle = "选择文件夹 ";
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = 0;
bi.lParam = 0;
bi.iImage = 0;

if (pidl = SHBrowseForFolder(&bi)) //弹出文件夹浏览窗口,并选取目录
{
if( SHGetPathFromIDList(pidl, path) == TRUE )
m_strRoot = path ;
else
m_strRoot.Empty();

SetDlgItemText(IDC_ROOTDIR,path);
}
}

这不是鸭头 2010-09-14
  • 打赏
  • 举报
回复
路径截取不就可以了么?
Eleven 2010-09-14
  • 打赏
  • 举报
回复
恭喜。。。
zzPandazz 2010-09-14
  • 打赏
  • 举报
回复
谢谢2L,根据2楼的方法解决了问题

wchar_t lpDIR[MAX_PATH] = {0};
LPITEMIDLIST il;
BROWSEINFO bi;

bi.hwndOwner = NULL;
bi.pidlRoot = NULL;
bi.pszDisplayName = lpDIR;
bi.lpszTitle = L"选择目录";
bi.ulFlags = 0;//BIF_BROWSEINCLUDEFILES;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;

il = SHBrowseForFolder(&bi);

SHGetPathFromIDList(il,lpDIR);//得到选定目录
CAboutDlg::SetDlgItemText(IDC_EDIT_PathName,lpDIR);
xiaohuh421 2010-09-14
  • 打赏
  • 举报
回复
就是用2楼的"目录对话框"就可以了.类似于文件对话框,只是文件对话框是选择文件,目录对话框是选择一个文件夹,也就是选择一个目录.
zzPandazz 2010-09-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 arpnet99 的回复:]
路径截取不就可以了么?
[/Quote]
但是这样的话也要选择某个文件才能结束对话框啊,我的想法是只要选到某个目录点确定,就返回路径,而不是确定了还继续在对话框里往下

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧