1. 程式人生 > >MFC對話方塊選擇多個檔案及選擇資料夾

MFC對話方塊選擇多個檔案及選擇資料夾

  • 選擇多個檔案(這裡選擇多張圖片)
void SelctFiles()
{
    CFileDialog dlg(TRUE, _T("*.jpg"), NULL, OFN_ALLOWMULTISELECT|OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, _T("Image Files(*.jpg;*.png;*.bmp)|*.jpg;*.png;*.bmp|All Files (*.*)|*.*||"), NULL); 
dlg.m_ofn.lpstrTitle = _T("選擇圖片"); 
CString filename; 
vector<CString>
vecPicPaths; if(dlg.DoModal() == IDOK) { POSITION fileNamesPosition = dlg.GetStartPosition(); while(fileNamesPosition != NULL) { filename = dlg.GetNextPathName(fileNamesPosition); vecPicPaths.push_back(filename); } } int count = vecPicPaths.size(); if (count == 0
) MessageBox(_T("沒有選擇檔案"), NUL, MB_OK|MB_ICONQUESTION);
  • 選擇資料夾

    static CString ShowDialog()  
    {  
        TCHAR           szFolderPath[MAX_PATH] = {0};  
        CString         strFolderPath = TEXT("");  

        BROWSEINFO      sInfo;  
        ::ZeroMemory(&sInfo, sizeof(BROWSEINFO));  
        sInfo.pidlRoot
= 0; sInfo.lpszTitle = _T("請選擇處理結果儲存路徑"); sInfo.ulFlags = BIF_RETURNONLYFSDIRS|BIF_EDITBOX|BIF_DONTGOBELOWDOMAIN; sInfo.lpfn = NULL; // 顯示資料夾選擇對話方塊 LPITEMIDLIST lpidlBrowse = ::SHBrowseForFolder(&sInfo); if (lpidlBrowse != NULL) { // 取得資料夾名 if (::SHGetPathFromIDList(lpidlBrowse,szFolderPath)) { strFolderPath = szFolderPath; } } if(lpidlBrowse != NULL) { ::CoTaskMemFree(lpidlBrowse); } return strFolderPath; }