因为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);