这篇文章给大家介绍使用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++怎么编写一个打开选择文件夹对话框选择目录功能就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。