void CFileCleanerDlg::OnBnClickedButton2() { //打开文件夹 static TCHAR strDirName[MAX_PATH]; BROWSEINFO bi; CString szString = TEXT("选择一个源文件子文件夹"); bi.hwndOwner = ::GetFocus(); bi.pidlRoot = NULL; bi.pszDisplayName = strDirName; bi.lpszTitle = szString; bi.ulFlags = BIF_BROWSEFORCOMPUTER | BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS; bi.lpfn = NULL; bi.lParam = 0; bi.iImage = 0; LPITEMIDLIST pItemIDList = ::SHBrowseForFolder(&bi); if (pItemIDList == NULL) { return; } ::SHGetPathFromIDList(pItemIDList, strDirName); CString str = strDirName; //////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// //打开文件 ////1.字符串数组,用来保存对话框选择的文件路径,一般声明为成员变量 //TCHAR m_szFilePath[MAX_PATH] = {}; ////2.0获取桌面路径(对话框打开后的默认初始路径,可写可不写) //TCHAR szDir[MAX_PATH] = { 0 }; ////2.1 CSIDL_DESKTOP代表桌面,想获得其余默认路径的值查找MSDN ////CSIDL_DESKTOP 所代表的参数值不同,默认文件路径不同 //SHGetSpecialFolderPath(NULL, szDir, CSIDL_DESKTOP, NULL); ////打开选择文件对话框API:GetOPenFIleName(OPENFILENAME ofn) ////这些都是参数,给OPENFILENAME结构体赋值 //OPENFILENAME ofn = { sizeof(OPENFILENAME) }; //TCHAR szFileName[MAX_PATH] = { 0 }; //ofn.Flags = OFN_HIDEREADONLY; //ofn.hwndOwner = NULL; ////这个是文件过滤,显示扩展名为什么的文件 ////需要添加过滤条件的按套路添加 //TCHAR szFilter[] = TEXT("EXE Files(*.exe) *.exe ") // TEXT("DLL File(*.dll) * .dll ") // TEXT("ALL Files(*.*) * .* "); //ofn.lpstrFilter = szFilter; //ofn.nMaxFile = MAX_PATH; //ofn.nMaxFileTitle = MAX_PATH; ////上边都是套路,下面这三个根据选择设置为临时变量或成员变量 //ofn.lpstrFile = m_szFilePath;//文件名:1.text //ofn.lpstrFileTitle = szFileName;//全路径: D:1231.txt //ofn.lpstrInitialDir = szDir;//文件所在路径; D:123 ////上面都是为这个API服务的 //if (!GetOpenFileName(&ofn)) //// return; /*m_pathValue = m_szFilePath;*/ m_pathValue = str; UpdateData(FALSE); }