第一种方法,使用CFolderPickerDialog函数,适用于高版本VS高版本:
打开选择文件路径
void CMFC1Dlg::OnBnClickedButtonOpen()
{CFolderPickerDialog fd(NULL, 0, this, 0);
if (fd.DoModal() == IDOK)
{
CString des;
des = fd.GetPathName();
SetDlgItemText(IDC_OPENANDSAVE, des);
//MessageBox(des);
}
}
第二种方法,使用BROWSEINFO 选择目录:
void CMFC1Dlg::OnBnClickedSave()
{
// TODO: 在此添加控件通知处理程序代码
char szPath[MAX_PATH]; //存放选择的目录路径
CString str;
ZeroMemory(szPath, sizeof(szPath));
BROWSEINFO bi;
bi.hwndOwner = m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = (LPWSTR)szPath;
bi.lpszTitle = _T("请选择所需的目录:");
bi.ulFlags = BIF_BROWSEINCLUDEFILES | BIF_NEWDIALOGSTYLE ;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
LPITEMIDLIST lp = SHBrowseForFolder(&bi);
if (lp && SHGetPathFromIDList(lp, (LPWSTR)szPath))
{
str.Format(_T("选择的目录为 %s"), szPath);
SetDlgItemText(IDC_OPENANDSAVE, (LPWSTR)szPath);
}
else
{
AfxMessageBox(_T("无效的目录,请重新选择"));
}
}
第三种方法,使用CFileDialog打开文件
void CMFC1Dlg::OnBnClickedOpen()
{
// TODO: 在此添加控件通知处理程序代码
CFileDialog findFileDlg(
TRUE, // TRUE是创建打开文件对话框,FALSE则创建的是保存文件对话框
_T(".txt"), // 默认的打开文件的类型
NULL, // 默认打开的文件名
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, // 打开只读文件
_T("文本文件(*.doc)|*.doc|表格文件(*.xlxs)|*.xlxs|所有文件 (*.*)|*.*||") // 所有可以打开的文件类型
);
// findFileDlg.GetOFN().lpstrInitialDir=strFile.c_str();// 默认目录
if (IDOK == findFileDlg.DoModal())
{
char tempBuff[1024];
int index = 0, startPos = 0, playTime, iSum, findFlag = 0, iChn = 0;
CString m_FilePath = findFileDlg.GetPathName(); // 取出文件路径
SetDlgItemText(IDC_OPENANDSAVE, m_FilePath);
}
}