MFC CFolderPickerDialog 和CFileDialog选择文件路径

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

猜你喜欢

转载自blog.csdn.net/u013211966/article/details/71204709