C++ 打开选择文件夹对话框选择目录的操作

 更新时间:2021年01月13日 11:07:47   作者:dofaster  
这篇文章主要介绍了C++ 打开选择文件夹对话框选择目录的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

需要添加头文件:

#ifdef WIN32
#include <shlobj.h>
#endif

调用文件对话框选择目录:

// 选择目录
void CustomInstalWndViewCtrl::OnSigBtnSelectInstallDir()
{
 BROWSEINFO bi;
 bi.hwndOwner = NULL;
 bi.pidlRoot = CSIDL_DESKTOP;//文件夹的根目录,此处为桌面
 bi.pszDisplayName = NULL;
 bi.lpszTitle = NULL;//显示位于对话框左上部的提示信息
 bi.ulFlags = BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE;//有新建文件夹按钮
 bi.lpfn = NULL;
 bi.iImage = 0;
 LPITEMIDLIST pidl = SHBrowseForFolder(&bi);//调用选择对话框
 if (pidl == NULL)
 {
 std::cout << "没有选择目录" << std::endl;
 return;
 }
 TCHAR strFolder[MAX_PATH];
 SHGetPathFromIDList(pidl, strFolder);
 std::string sFolder = StringUtil::WStringToString(strFolder);
}

补充:c++ MFC选择文件夹

void openDir(){
 //选择文件夹 
 string _Path,root;
 TCHAR szDir[MAX_PATH];
 BROWSEINFO bi;
 ITEMIDLIST *pidl;
 bi.hwndOwner = this->m_hWnd;
 bi.pidlRoot = NULL;
 bi.pszDisplayName = szDir;//这个是输出缓冲区 
 bi.lpszTitle = _T("文件夹:"); //标题 
 bi.ulFlags = BIF_NEWDIALOGSTYLE;//使用新的界面,在win7中效果较好//BIF_RETURNONLYFSDIRS; 
 bi.lpfn = NULL;
 bi.lParam = 0;
 bi.iImage = 0;
 pidl = SHBrowseForFolder(&bi);//弹出对话框 
 if (pidl == NULL)//点了取消,或者选择了无效的文件夹则返回NULL 
 return;
 
 if (SHGetPathFromIDList(pidl, szDir)) {
 int length = WideCharToMultiByte(CP_ACP, 0, szDir, -1, NULL, 0, NULL, NULL);
 char ch[] = "";
 WideCharToMultiByte(CP_ACP, 0, szDir, -1, ch, length, NULL, NULL);
 root = string(ch);
 } 
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • C++使用htslib库读入和写出bam文件的实例

    C++使用htslib库读入和写出bam文件的实例

    下面小编就为大家分享一篇C++使用htslib库读入和写出bam文件的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • MFC框架之OnIdle案例详解

    MFC框架之OnIdle案例详解

    这篇文章主要介绍了MFC框架之OnIdle案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C++中的函数你真的理解了吗

    C++中的函数你真的理解了吗

    这篇文章主要为大家详细介绍了C++中的函数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • C++中replace()函数使用方法汇总

    C++中replace()函数使用方法汇总

    这篇文章主要介绍了C++中replace()函数使用方法汇总,在这篇文章中为大家详细介绍C++ replace()函数的各种应用方式,希望朋友们可以从这里介绍的内容充分掌握这一应用技巧
    2015-11-11
  • 基于VC实现的网络监听功能程序实例

    基于VC实现的网络监听功能程序实例

    这篇文章主要介绍了基于VC实现的网络监听功能程序,需要的朋友可以参考下
    2014-07-07
  • json格式解析和libjson的用法介绍(关于cjson的使用方法)

    json格式解析和libjson的用法介绍(关于cjson的使用方法)

    下面小编就为大家带来一篇json格式解析和libjson的用法介绍(关于cjson的使用方法)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • C++ 数据结构完全二叉树的判断

    C++ 数据结构完全二叉树的判断

    这篇文章主要介绍了C++ 数据结构完全二叉树的判断的相关资料,需要的朋友可以参考下
    2017-06-06
  • C语言JNI的动态注册详解

    C语言JNI的动态注册详解

    这篇文章主要介绍了JAVA JNI的动态注册,这里提供简单实例代码,需要的朋友可以参考下,小编觉得写的还不错,希望能给你带来帮助
    2021-08-08
  • Cocos2d-x保存用户游戏数据CCUserDefault类使用实例

    Cocos2d-x保存用户游戏数据CCUserDefault类使用实例

    这篇文章主要介绍了Cocos2d-x保存用户游戏数据CCUserDefault类使用实例,需要的朋友可以参考下
    2014-09-09
  • C++函数模板的使用详解

    C++函数模板的使用详解

    大家好,本篇文章主要讲的是C++函数模板的使用详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01

最新评论