如何实现文件夹选择对话框?

Tranum 2003-12-15 11:11:39
偶写一个程序,其中一个功能是把一批选中的文件拷贝到另一个文件夹,可是以前常用的CFileDialog必须指定到文件,选择一个文件夹点保存会打开这个文件夹,虽说也可以凑合用但是怪别扭的,谁能提供一个简单的实现那种常见的文件夹选择对话框啊?
...全文
137 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tranum 2003-12-15
  • 打赏
  • 举报
回复
抱歉啦,sinhighly和byry的回复结贴时没看到…………
仅对二位的热心表示谢意
byry 2003-12-15
  • 打赏
  • 举报
回复

void CTestBrowseDlg::OnBrowse()
{
CString str;

BROWSEINFO bi;

char name[MAX_PATH];

ZeroMemory(&bi,sizeof(BROWSEINFO));

bi.hwndOwner=GetSafeHwnd();

bi.pszDisplayName=name;

bi.lpszTitle="选择安装目录:";

LPITEMIDLIST idl=SHBrowseForFolder(&bi);

if(idl==NULL)
return;

SHGetPathFromIDList(idl,str.GetBuffer(MAX_PATH));

str.ReleaseBuffer();

UpdateData(FALSE);
}
sinhighly 2003-12-15
  • 打赏
  • 举报
回复
BROWSEINFO bi;
LPITEMIDLIST pidl;
bi.hwndOwner = this->GetSafeHwnd();//
bi.pidlRoot = NULL;
bi.pszDisplayName = NULL;//DisplayName;
bi.lpszTitle = "请选择路径";
bi.ulFlags = BIF_DONTGOBELOWDOMAIN|BIF_RETURNFSANCESTORS|BIF_RETURNONLYFSDIRS;//|BIF_BROWSEINCLUDEFILES;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
pidl = SHBrowseForFolder(&bi);
if (pidl == NULL) return;
char szPath[MAX_PATH];
SHGetPathFromIDList(pidl, szPath);
Tranum 2003-12-15
  • 打赏
  • 举报
回复
谢谢啦,称心如意^o^
Semigod 2003-12-15
  • 打赏
  • 举报
回复
给你一个函数:

CString ShowSelectDirectoryDlg(const CString & strDlgTitle)

{

char szDir[MAX_PATH];

BROWSEINFO bi;

ITEMIDLIST *pidl;



bi.hwndOwner = this->m_hWnd;

bi.pidlRoot = NULL;

bi.pszDisplayName = szDir;

bi.lpszTitle = strDlgTitle;

bi.ulFlags = BIF_RETURNONLYFSDIRS;

bi.lpfn = NULL;

bi.lParam = 0;

bi.iImage = 0;



pidl = SHBrowseForFolder(&bi);

if(pidl == NULL)

return _T("");

if(!SHGetPathFromIDList(pidl, szDir))

return _T("");

return CString(szDir);

}

15,980

社区成员

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

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