C++ 打開選擇文件夾對話框選擇目錄的操作
更新時間:2021年01月13日 11:07:47 作者:dofaster
這篇文章主要介紹了C++ 打開選擇文件夾對話框選擇目錄的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
需要添加頭文件:
#ifdef WIN32 #include <shlobj.h> #endif
調(diào)用文件對話框選擇目錄:
// 選擇目錄
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);//調(diào)用選擇對話框
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;//這個是輸出緩沖區(qū)
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);
}
}
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
C++?中如何結(jié)束?while?(cin>>str)?的輸入
這篇文章主要介紹了C++?中如何結(jié)束?while?(cin>>str)?的輸入,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
C++ 中的new 和 delete 運算符及new和malloc的區(qū)別解析
在C++中,又引出了一個新玩法:new 和 delete,在C++中,new是用來動態(tài)開辟內(nèi)存的,delete是用來釋放我們所動態(tài)開辟的內(nèi)存C++中的new和delete運算符及new和malloc的區(qū)別解析,感興趣的朋友跟隨小編一起看看吧2024-11-11
C語言函數(shù)調(diào)用的三種實現(xiàn)方法實例
C語言中函數(shù)的調(diào)用主要有如下三種方法,直接調(diào)用,函數(shù)指針調(diào)用,函數(shù)指針傳遞調(diào)用其中后兩種本質(zhì)一樣,但在有無返回值時還稍有差別,下面這篇文章主要給大家介紹了關(guān)于C語言函數(shù)調(diào)用的三種實現(xiàn)方法,需要的朋友可以參考下2022-01-01
C++實現(xiàn)拷貝構(gòu)造函數(shù)的方法詳解
拷貝構(gòu)造函數(shù)是構(gòu)造函數(shù)的一個重載,因此顯式的定義了拷貝構(gòu)造,那么編譯器也不再默認生成構(gòu)造函數(shù)。本文主要介紹了C++實現(xiàn)拷貝構(gòu)造函數(shù)的方法,需要的可以參考一下2022-09-09

