From: http://blog.sina.com.cn/s/blog_790bb7190100yxm7.html

对于文件选择对话框和目录选择对话框。在VC中打开文件选择对话框比较简单,使用CFileDialog就可以。打开目录选择对话框就稍微麻烦一些。需要使用API函数SHBrowseForFolder来实现。

 该函数原型为:
     LPITEMIDLIST SHBrowseForFolder(LPBROWSEINFOlpbi); 
 其中LPBROWSEINFO为BROWSEINFO结构的指针。

BROWSEINFO结构如下:

typedef struct _browseinfo
{HWND           hwndOwner;LPCITEMIDLIST pidlRoot;LPSTR          pszDisplayName;LPCSTR           lpszTitle;UINT          ulFlags;BFFCALLBACK     lpfn;LPARAM         lParam;int              iImage;
}BROWSEINFO;

调用例子如下:

CString GetfolderPath()
{CString folderPath;BROWSEINFO bi;char buf[MAX_PATH];//初始化入口参数bibi.hwndOwner = NULL;bi.pidlRoot = NULL;bi.pszDisplayName = buf;  //此参数如为NULL则不能显示对话框bi.lpszTitle = "选择路径";bi.ulFlags = BIF_RETURNONLYFSDIRS;bi.lpfn = NULL;bi.iImage = 0;LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);   //调用显示选择对话框if(pIDList){SHGetPathFromIDList(pIDList,buf);            //取得文件夹路径到buf里folderPath = buf;        //将路径保存在一个CString对象里}folderPath.Append("\\");return folderPath;
}

===========================================================
使用示例:

void CtzipUncompressDlg::OnBnClickedBtnUncompressto()
{CString folderPath;BROWSEINFO bi;char buf[MAX_PATH] = {0};//初始化入口参数bibi.hwndOwner = NULL;bi.pidlRoot = NULL;bi.pszDisplayName = buf;bi.lpszTitle = "解压缩到...";bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE ;// new Folder buttonbi.lpfn = NULL;bi.iImage = 0;LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);            // 显示"浏览文件夹"对话框if(pIDList && SHGetPathFromIDList(pIDList, buf))       // 填充文件夹路径到buf{folderPath = buf;m_sDestDir = folderPath;UpdateData(FALSE);}
}

VC 打开目录对话框相关推荐

  1. vc 打开文件对话框获取选择文件路径

    #include<Windows.h> int getfilename(wchar_t *buf, int len) {     OPENFILENAME ofn;     buf[0] ...

  2. VC++ 打开文件夹,保存文件等对话框的调用

    2019独角兽企业重金招聘Python工程师标准>>> VC++ 打开文件夹,保存文件等对话框的调用 一.打开文件夹: 1.CFileDialog实现 CFileDialog hFi ...

  3. vc 添加打开文件对话框并读取文件

    1.创建打开文件对话框:                                   CFileDialog dlg(TRUE,//TRUE是创建打开文件对话框,FALSE则创建的是保存文件对 ...

  4. C#打开选择文件对话框和选择目录对话框

    1.    选择文件对话框,首先引用using Microsoft.Win32名称空间. private void BrowseButton_Click(object sender, RoutedEv ...

  5. 用VC打开位图程序[转]

    转自http://sophiekudo.blog.hexun.com/10811818_d.html 经过几天的奋战,按照网上的主要步骤,搞出来了一个用VC打开位图的程序,很是兴奋,现在把主要代码发在 ...

  6. 打开方式对话框 及 RUNDLL32(RUNDLL)的使用

    转自:http://www.cnblogs.com/suiyingjie/archive/2006/08/07/469984.html 在VC中调用"打开方式..."(OPEN W ...

  7. windows api打开文件对话框

    用windows api 写打开文件对话框主要使用OPENFILENAME ,GetOpenFileName, GetSaveFileName; 1.OPENFILENAME 结构体介绍:要使用Get ...

  8. python打开-Python中的打开文件对话框(转)

    1.最早学习Tkinter的时候,在<Tkinter编程代码实例>中看到的"打开文件对话框"需要用到FileDialog模块,代码非常简单: from Tkinter ...

  9. C#打开文件对话框和文件夹对话框

    打开文件对话框OpenFileDialog OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = "Excel文件(*.xls;*.x ...

最新文章

  1. 封装函数 f,使 f 的 this 指向指定的对象
  2. Linux常用命令英文全称与中文解释Linux系统
  3. 【资源】首发:徐亦达老师的机器学习课件及下载(中文目录)
  4. Java程序员:不要因未知而让云成本大涨
  5. spark-on-yarn日志配置
  6. discuz viewthread.php,修改discuz论坛的标题header和footer
  7. 电脑静音工作,又听不到12306的来票音乐,纠结啊 !但春节前工作多任务重,不能安心工作,就动手做个“无声购票弹窗”工具吧!...
  8. C++之父谈C++:一天之内你就能学会出色使用C++
  9. Mysql查询高速缓存区
  10. 修改JEECG项目浏览器标题
  11. open函数_全!Python函数和文件操作合集(长文系列第三篇)
  12. 华为鸿蒙os logo,华为鸿蒙OS Logo揭秘:Powered by HarmonyOS
  13. malicious java_[我研究] Detecting Malicious Java Code Using Virtual Machine Auditing
  14. 先决条件检查失败错误
  15. 怎么实现微信公众号生成专属二维码推广来源统计
  16. Facebook、Twitter、LinkedIn分享按钮总结
  17. 从前慢-项目小型秒杀系统
  18. 苹果自带地图进行定位
  19. eplan 电箱布局_EPLAN电气图实例--控制柜(1)
  20. ead开局 华三inode_03 EAD用户接入-受控软件管理-新华三集团-H3C

热门文章

  1. Windows Server 2003 R2与SP2 的区别
  2. hive 导入hdfs数据_将数据加载或导入运行在基于HDFS的数据湖之上的Hive表中的另一种方法。
  3. java映射的概念_Java 反射 概念理解
  4. 推荐算法的先验算法的连接_数据挖掘专注于先验算法
  5. leetcode 852. 山脉数组的峰顶索引(二分查找)
  6. leetcode1028. 从先序遍历还原二叉树(dfs/栈)
  7. flutter bloc_如何在Flutter中使用Streams,BLoC和SQLite
  8. 开发人员避免编写测试的2个最常见原因
  9. [pytorch] Pytorch入门
  10. C# Java间进行RSA加密解密交互(二)