在MFC程式設計中經常會需要用到選擇目錄和選擇檔案的界面,以下總結一下本人常用的這兩種對話框的生成方法:
選擇目錄對話框
//選擇目錄按鈕
void CDcPackerDlg::OnBnClickedDecgen()
{
char szPath[MAX_PATH]; //存放選擇的目錄路徑
CString str;
ZeroMemory(szPath, sizeof(szPath));
BROWSEINFO bi;
bi.hwndOwner = m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = szPath;
bi.lpszTitle = "請選擇需要打包的目錄:";
bi.ulFlags = 0;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
//彈出選擇目錄對話框
LPITEMIDLIST lp = SHBrowseForFolder(&bi);
if(lp && SHGetPathFromIDList(lp, szPath))
str.Format("選擇的目錄為 %s", szPath);
AfxMessageBox(str);
}
else
AfxMessageBox("無效的目錄,請重新選擇");
}
選擇檔案對話框
CString CDcPackerDlg::BootOpenDialog() //傳回選擇的檔案名稱
CString strFile = _T("");
CFileDialog dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T("Describe Files (*.cfg)|*.cfg|All Files (*.*)|*.*||"), NULL);
if (dlgFile.DoModal())
strFile = dlgFile.GetPathName();
return strFile;
//加載檔案按鈕
void CDcPackerDlg::OnBnClickedSelectdec()
// TODO: Add your control notification handler code here
m_strDescPath = ""; //類的成員變量
//"打開檔案"對話框,選擇檔案,傳回其路徑
m_strDescPath = BootOpenDialog();