1. 程式人生 > >Windows--MFC選擇文件對話框和選擇文件夾對話框

Windows--MFC選擇文件對話框和選擇文件夾對話框

pan -- amp grep rom on() urn posit task

選擇單個文件對話框:

1 CString strFile = _T("");
2 
3 CFileDialog    dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T("Describe Files (*.jpg)|*.jpg|All Files (*.*)|*.*||"), NULL);
4 
5 if (dlgFile.DoModal())
6 {
7      strFile = dlgFile.GetPathName();
8 }

選擇多個文件對話框

 1 void CBugReportDlg::SelectFiles( vector<CString>& all_sel_files )
2 { 3 CFileDialog dlg(TRUE, _T("*.jpg"), NULL, OFN_ALLOWMULTISELECT|OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, _T("Image Files(*.jpg)|*.jpg|"), NULL); 4 dlg.m_ofn.lpstrTitle = _T("選擇圖片"); 5 CString filename; 6 if(dlg.DoModal() == IDOK) 7 { 8 POSITION fileNamesPosition = dlg.GetStartPosition();
9 while(fileNamesPosition != NULL) 10 { 11 filename = dlg.GetNextPathName(fileNamesPosition); 12 all_sel_files.push_back(filename); 13 } 14 } 15 16 }

選擇文件夾

 1 CString CBugReportDlg::SelFilePath()
 2 {
 3     TCHAR           szFolderPath[MAX_PATH] = {0
}; 4 CString strFolderPath = TEXT(""); 5 6 BROWSEINFO sInfo; 7 ::ZeroMemory(&sInfo, sizeof(BROWSEINFO)); 8 sInfo.pidlRoot = 0; 9 sInfo.lpszTitle = _T("請選擇處理結果存儲路徑"); 10 sInfo.ulFlags = BIF_RETURNONLYFSDIRS|BIF_EDITBOX|BIF_DONTGOBELOWDOMAIN; 11 sInfo.lpfn = NULL; 12 13 // 顯示文件夾選擇對話框 14 LPITEMIDLIST lpidlBrowse = ::SHBrowseForFolder(&sInfo); 15 if (lpidlBrowse != NULL) 16 { 17 // 取得文件夾名 18 if (::SHGetPathFromIDList(lpidlBrowse,szFolderPath)) 19 { 20 strFolderPath = szFolderPath; 21 } 22 } 23 if(lpidlBrowse != NULL) 24 { 25 ::CoTaskMemFree(lpidlBrowse); 26 } 27 28 return strFolderPath; 29 }

Windows--MFC選擇文件對話框和選擇文件夾對話框