VC里如何显示一个选择文件夹的对话框?

dehualiu 2008-12-08 03:31:59
VC里如何显示一个选择文件夹的对话框?谢谢
...全文
480 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
一条晚起的虫 2008-12-08
  • 打赏
  • 举报
回复
SHBrowseForFolder
Dialog for Selecting (and Creating) Folders
http://www.codeguru.com/Cpp/W-D/dislog/dialogforselectingfolders/article.php/c2019/
ilovedrv 2008-12-08
  • 打赏
  • 举报
回复
这是网上那个著名的CPathDialog类,可以直接用:


http://www.codeguru.com/Cpp/W-D/dislog/dialogforselectingfolders/article.php/c2019/

闪破风浪 2008-12-08
  • 打赏
  • 举报
回复
来晚了~
kier2 2008-12-08
  • 打赏
  • 举报
回复
恩,用MFC提供的CFileDialog类
zhuweiping2003 2008-12-08
  • 打赏
  • 举报
回复
mark
jiyuanjie 2008-12-08
  • 打赏
  • 举报
回复
SHBrowseForFolder 是专门打开文件夹的函数
路人乙2019 2008-12-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jason_wentzel 的回复:]

BROWSEINFO bi;
char buffer[MAX_PATH];
ZeroMemory(buffer, MAX_PATH);
bi.hwndOwner =GetSafeHwnd();
bi.pidlRoot = NULL;
//bi.pszDisplayName =LPWSTR(buffer);//NULL;
bi.pszDisplayName = buffer;//NULL;
bi.lpszTitle = NULL;
bi.ulFlags =BIF_BROWSEFORCOMPUTER && BIF_RETURNONLYFSDIRS;
bi.lpfn =NULL;
bi.lParam =0;//NUL…
[/Quote].
wocow3 2008-12-08
  • 打赏
  • 举报
回复
文件夹对话框用 SHBrowseForFolder
文件对话框用 CFileDialog
lwx300 2008-12-08
  • 打赏
  • 举报
回复
CString GetOpenDir(HWND hwndOwner, LPCTSTR lpszTitle)
{
TCHAR szDir[MAX_PATH + 1];
ITEMIDLIST *pidl;
BROWSEINFO bi;

ZeroMemory(&bi, sizeof(BROWSEINFO));
bi.hwndOwner = hwndOwner;
bi.lpszTitle = lpszTitle;
bi.ulFlags = BIF_RETURNONLYFSDIRS;

//弹出选择目录对话框。
return ((pidl = SHBrowseForFolder(&bi)) && SHGetPathFromIDList(pidl, szDir)) ? szDir : _T("");
}
jinlingzwp 2008-12-08
  • 打赏
  • 举报
回复
找到答案就好,记得散分....
vinep 2008-12-08
  • 打赏
  • 举报
回复
恭喜!
JF
孤客天涯 2008-12-08
  • 打赏
  • 举报
回复

BROWSEINFO bi;
char buffer[MAX_PATH];
ZeroMemory(buffer, MAX_PATH);
bi.hwndOwner =GetSafeHwnd();
bi.pidlRoot = NULL;
//bi.pszDisplayName =LPWSTR(buffer);//NULL;
bi.pszDisplayName = buffer;//NULL;
bi.lpszTitle = NULL;
bi.ulFlags =BIF_BROWSEFORCOMPUTER && BIF_RETURNONLYFSDIRS;
bi.lpfn =NULL;
bi.lParam =0;//NULL;
bi.iImage = 0;

LPITEMIDLIST pidl = NULL;
BOOL bSuccess=FALSE;

if(pidl = SHBrowseForFolder(&bi))
{
if(pidl != NULL)
{
char lpszPath[MAX_PATH];
ZeroMemory(lpszPath, MAX_PATH);


if(::SHGetPathFromIDList(pidl,lpszPath)) //取得文件夹名
{


}
}
}
dehualiu 2008-12-08
  • 打赏
  • 举报
回复
自己在网上找到答案了,哈哈
dehualiu 2008-12-08
  • 打赏
  • 举报
回复
CString SelectDirectory(CString strTitle)
{
BROWSEINFO bi;
CString strDirPath;
LPITEMIDLIST pidl;
LPMALLOC pMalloc = NULL;

ZeroMemory(&bi, sizeof(bi));
bi.hwndOwner = NULL;
bi.pszDisplayName = NULL;
bi.lpszTitle = strTitle;
bi.ulFlags = BIF_EDITBOX|BIF_RETURNFSANCESTORS;
bi.lParam = NULL;
bi.iImage = 0;
pidl = SHBrowseForFolder(&bi);

if(pidl)
{
SHGetPathFromIDList(pidl, (char*)(LPCTSTR)strDirPath);
}
return strDirPath;
}

15,979

社区成员

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

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