因爲c++自帶的 CFileDialog,只能打開文件,不能打開文件夾,故爲了使用方便,封裝了一個能夠打開文件夾的。c++
打開文件夾的封裝:code
bool OpenFolder(HWND hwndOwner/*=NULL*/, CString& strFolder) { //選擇文件夾 BROWSEINFO info; info.hwndOwner=hwndOwner; info.pidlRoot=NULL; info.pszDisplayName=NULL; info.lpszTitle=_T("請選擇路徑"); info.ulFlags=BIF_RETURNONLYFSDIRS|BIF_USENEWUI; info.lpfn =NULL; info.iImage =0; LPCITEMIDLIST pidl=SHBrowseForFolder(&info); if(!pidl) return false; TCHAR szDisplayName[255]; SHGetPathFromIDList(pidl,szDisplayName); strFolder = szDisplayName; //由於不肯定傳入的路徑是否包含\,因此先刪除再進行添加 strFolder.TrimRight(_T("\\")); strFolder += _T("\\"); return true; }
調用:it
CString strFolder;//用於接收返回的路徑 OpenFolder(NULL ,strFolder);