MFC CFolderPickerDialog 和CFileDialog选择文件路径

xiaoxiao2021-02-28  92

第一种方法,使用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);     } }

转载请注明原文地址: https://www.6miu.com/read-27126.html

最新回复(0)