5-8万年薪顶级嵌入式,京沪深就业地 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

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

楼主Tranum(万漏阁主人)2003-12-15 11:11:39 在 VC/MFC / 界面 提问

偶写一个程序,其中一个功能是把一批选中的文件拷贝到另一个文件夹,可是以前常用的CFileDialog必须指定到文件,选择一个文件夹点保存会打开这个文件夹,虽说也可以凑合用但是怪别扭的,谁能提供一个简单的实现那种常见的文件夹选择对话框啊? 问题点数:100、回复次数:5Top

1 楼Semigod()回复于 2003-12-15 11:20:15 得分 100

给你一个函数:  
   
  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);  
   
  }  
     
  Top

2 楼Tranum(万漏阁主人)回复于 2003-12-15 11:25:03 得分 0

谢谢啦,称心如意^o^Top

3 楼sinhighly(非典型程序员)回复于 2003-12-15 11:26:55 得分 0

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);  
  Top

4 楼byry(百事罐头)回复于 2003-12-15 11:27:26 得分 0

 
  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);  
  }Top

5 楼Tranum(万漏阁主人)回复于 2003-12-15 12:09:26 得分 0

抱歉啦,sinhighly和byry的回复结贴时没看到…………  
  仅对二位的热心表示谢意Top

相关问题

  • 怎样实现选择目录(文件夹)的对话框?
  • 如何实现带有新建文件夹功能的文件夹选择对话框?
  • 使用selectdirectory('选择文件夹','',s)打开选择文件夹对话框,怎么使对话框居中显示?
  • 怎么实现“文件夹选择”对话框,它有没有对话框类可以直接调用阿?(蔡鸟)
  • 哪里有文件夹选择对话框(CPathDialog)控件?
  • 选择文件夹的对话框是什么?
  • 请问 如何创建文件夹选择对话框?
  • 一个系统文件夹选择对话框的问题?
  • 求助,选择文件夹的对话框是哪个呀
  • 如何实现 浏览文件夹对话框??

关键词

  • bi
  • 文件夹
  • 选择
  • null
  • pidl
  • bif
  • szdir
  • browseinfo
  • cstring

得分解答快速导航

  • 帖主:Tranum
  • Semigod

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
x 提问