1. 程式人生 > >vs2010MFC選擇檔案對話方塊,選擇目錄對話方塊

vs2010MFC選擇檔案對話方塊,選擇目錄對話方塊

選擇檔案對話方塊:

第四個引數 dwFlags為對話方塊風格,一般為OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 即隱藏只讀選項和覆蓋已有檔案前提示。

TCHAR szFilter[] = _T("jpg(*.jpg)|*.jpg|bmp(*.bmp)|*.bmp");   //可供選擇的字尾
    // 構造儲存檔案對話方塊   
	//第1個引數false是儲存檔案,true是開啟檔案。第2個引數是預設字尾,第3個引數是預設檔名
    CFileDialog fileDlg(FALSE, _T("jpg"), _T("my"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, this);
    CString strFilePath;   //檔案路徑
	
    // 顯示儲存檔案對話方塊   
    if (IDOK == fileDlg.DoModal())   
    {   
        // 如果點選了檔案對話方塊上的“儲存”按鈕,則將選擇的檔案路徑顯示到編輯框裡   
        strFilePath = fileDlg.GetPathName();   
        SetDlgItemText(IDC_EDIT1, strFilePath);   
    }

選擇目錄對話方塊:
char szBuffer[_MAX_PATH];
	BROWSEINFO browseInfo;
	browseInfo.hwndOwner=this->m_hWnd;
	browseInfo.pidlRoot=NULL;
	browseInfo.pszDisplayName=NULL;
	browseInfo.lpszTitle="請選擇影象儲存路徑";
	browseInfo.ulFlags=BIF_RETURNFSANCESTORS|BIF_RETURNONLYFSDIRS;
	browseInfo.lpfn=NULL;
	browseInfo.lParam=0;
	LPITEMIDLIST lpItemIDList;
	//CString strOpenPath;
	if((lpItemIDList=::SHBrowseForFolder(&browseInfo))!=NULL)
	{
		if(::SHGetPathFromIDList(lpItemIDList,szBuffer))
		{
			if(szBuffer[0]=='\0')
			{
				AfxMessageBox("Fail to get directory",MB_ICONSTOP|MB_OK);
				return;
			}
			strSavePath=szBuffer;//儲存的路徑
		}
		else
		{
			AfxMessageBox("Fail to get directory!",MB_ICONSTOP|MB_OK);
			return;
		}
	}