MFC對話方塊選擇多個檔案及選擇資料夾
阿新 • • 發佈:2019-01-24
- 選擇多個檔案(這裡選擇多張圖片)
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;
}