由于c++自带的 CFileDialog,只能打开文件,不能打开文件夹,故为了使用方便,封装了一个可以打开文件夹的。
打开文件夹的封装:
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;}
调用:
CString strFolder;//用于接收返回的路径OpenFolder(NULL ,strFolder);