MFC的界面中,需要实现这样两个功能:
1、在界面上加一个按钮,单击按钮弹出一个对话框选择文件,在工程中获得文件的路径;
2、在界面上加一个按钮,单击按钮弹出一个对话框选择文件夹,在工程中获取文件夹的路径。
一、获取文件路径
1 // -- 按钮的消息响应函数 2 void CDialogSampled::OnBnClickedButtonOpen() 3 { 4 // TODO: 在此添加控件通知处理程序代码 5 CString m_strFilePath = _T(""); 6 7 //获取文件路径名 8 LPCTSTR szFilter =_T("TXT(*.txt)|*.txt|LOG(*.log)|*.log|ALLSUPORTFILE(*.*)|*.*||"); 9 CFileDialog dlgFileOpenImg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter,NULL); 10 //打开txt文件 11 if(dlgFileOpenImg.DoModal() == IDOK) 12 { 13 //读取文件名 14 m_strFilePath = dlgFileOpenImg.GetPathName(); 15 } 16 else 17 { 18 return; 19 } 20 }
二、获取文件夹路径
//选择保存路径 void CDialogSampled::OnBnClickedButtonSavePathSelect() { // TODO: 在此添加控件通知处理程序代码 CString m_saveFilePath; //打开文件,获取文件路径名 TCHAR szPath[_MAX_PATH]; BROWSEINFO bi; bi.hwndOwner = GetSafeHwnd(); bi.pidlRoot = NULL; bi.lpszTitle = "Please select the input path"; bi.pszDisplayName = szPath; bi.ulFlags = BIF_RETURNONLYFSDIRS; bi.lpfn = NULL; bi.lParam = NULL; LPITEMIDLIST pItemIDList = SHBrowseForFolder(&bi); if(pItemIDList) { if(SHGetPathFromIDList(pItemIDList,szPath)) { m_saveFilePath = szPath; m_saveFilePath = m_saveFilePath+"\\"; } //use IMalloc interface for avoiding memory leak IMalloc* pMalloc; if( SHGetMalloc(&pMalloc) != NOERROR ) { TRACE(_T("Can't get the IMalloc interface\n")); } pMalloc->Free(pItemIDList); if(pMalloc) pMalloc->Release(); UpdateData(FALSE); } }