gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 33 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章C++ 打开选择文件夹对话框选择目录的操作由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

需要添加头文件:

?
1
2
3
#ifdef WIN32
#include <shlobj.h>
#endif

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 选择目录
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选择文件夹 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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);
  }
}

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

原文链接:https://blog.csdn.net/llmys/article/details/87893661 。

最后此篇关于C++ 打开选择文件夹对话框选择目录的操作的文章就讲到这里了,如果你想了解更多关于C++ 打开选择文件夹对话框选择目录的操作的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com