vs2013环境要求比vc6.0严格些。以前的代码不能直接拿来用,做了些修改。有效果图。

打开文件:

[cpp] view plain copy
  1. CString gReadFilePathName;
  2. CFileDialog fileDlg(true, _T("mp3"), _T("*.mp3"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("mp3 Files (*.mp3)|*.mp3|wav File(*.wav)|*.wav|All File (*.*)|*.*||"), NULL);
  3. if (fileDlg.DoModal() == IDOK)    //弹出对话框
  4. {
  5. gReadFilePathName = fileDlg.GetPathName();//得到完整的文件名和目录名拓展名
  6. GetDlgItem(IDC_EDIT1)->SetWindowText(gReadFilePathName);//将路径显示
  7. CString filename = fileDlg.GetFileName();
  8. }

打开文件夹:

[cpp] view plain copy
  1. CFileFind finder;
  2. CString path;
  3. BOOL fileExist;
  4. // 获取特定文件夹的LPITEMIDLIST,可以将之理解为HANDLE
  5. // 所谓的特定文件夹,你可以用CSIDL_XXX来检索之。
  6. LPITEMIDLIST rootLoation;
  7. SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &rootLoation);
  8. if (rootLoation == NULL) {
  9. // unkown error
  10. return;
  11. }
  12. // 配置对话框
  13. BROWSEINFO bi;
  14. ZeroMemory(&bi, sizeof(bi));
  15. bi.pidlRoot = rootLoation; // 文件夹对话框之根目录,不指定的话则为我的电脑
  16. bi.lpszTitle = _T("对话框抬头"); // 可以不指定
  17. // bi.ulFlags = BIF_EDITBOX | BIF_RETURNONLYFSDIRS;
  18. // 打开对话框, 有点像DoModal
  19. LPITEMIDLIST targetLocation = SHBrowseForFolder(&bi);
  20. if (targetLocation != NULL) {
  21. TCHAR targetPath[MAX_PATH];
  22. SHGetPathFromIDList(targetLocation, targetPath);
  23. //MessageBox( targetPath );
  24. GetDlgItem(IDC_EDIT1)->SetWindowText(targetPath);//将路径显示
  25. }

出处:http://blog.csdn.net/scu_zhongxq/article/details/5354003

在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();

    
}

Windows--MFC选择文件对话框和选择文件夹对话框

选择单个文件对话框:

1 CString strFile = _T("");
2
3 CFileDialog    dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T("Describe Files (*.jpg)|*.jpg|All Files (*.*)|*.*||"), NULL);
4
5 if (dlgFile.DoModal())
6 {
7      strFile = dlgFile.GetPathName();
8 }

选择多个文件对话框

 1 void CBugReportDlg::SelectFiles( vector<CString>& all_sel_files )
 2 {
 3     CFileDialog dlg(TRUE, _T("*.jpg"), NULL, OFN_ALLOWMULTISELECT|OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, _T("Image Files(*.jpg)|*.jpg|"), NULL);
 4     dlg.m_ofn.lpstrTitle = _T("选择图片");
 5     CString filename;
 6     if(dlg.DoModal() == IDOK)
 7     {
 8         POSITION fileNamesPosition = dlg.GetStartPosition();
 9         while(fileNamesPosition != NULL)
10         {
11             filename = dlg.GetNextPathName(fileNamesPosition);
12             all_sel_files.push_back(filename);
13         }
14     }
15
16 }

选择文件夹

 1 CString CBugReportDlg::SelFilePath()
 2 {
 3     TCHAR           szFolderPath[MAX_PATH] = {0};
 4     CString         strFolderPath = TEXT("");
 5
 6     BROWSEINFO      sInfo;
 7     ::ZeroMemory(&sInfo, sizeof(BROWSEINFO));
 8     sInfo.pidlRoot   = 0;
 9     sInfo.lpszTitle   = _T("请选择处理结果存储路径");
10     sInfo.ulFlags   = BIF_RETURNONLYFSDIRS|BIF_EDITBOX|BIF_DONTGOBELOWDOMAIN;
11     sInfo.lpfn     = NULL;
12
13     // 显示文件夹选择对话框
14     LPITEMIDLIST lpidlBrowse = ::SHBrowseForFolder(&sInfo);
15     if (lpidlBrowse != NULL)
16     {
17         // 取得文件夹名
18         if (::SHGetPathFromIDList(lpidlBrowse,szFolderPath))
19         {
20             strFolderPath = szFolderPath;
21         }
22     }
23     if(lpidlBrowse != NULL)
24     {
25         ::CoTaskMemFree(lpidlBrowse);
26     }
27
28     return strFolderPath;
29 }

MFC选择文件和文件夹对话框相关推荐

  1. MFC选择文件对话框和选择文件夹对话框

    转::https://www.cnblogs.com/zhqshome/p/7063730.html 选择单个文件对话框: CString strFile = _T("");CFi ...

  2. MFC实现打开、保存文件对话框和浏览文件夹对话框,把代码直接拷贝到要响应的按钮函数下面就行了

    MFC实现打开.保存文件对话框和浏览文件夹对话框,把代码直接拷贝到要响应的按钮函数下面就行了 一.打开.保存对话框 文件对话框属于通用对话框范畴(另外还有颜色,查找,查找替换,字体,打印等对话框). ...

  3. 弹出打开/保存文件对话框 选择文件夹对话框

    打开/保存文件对话框: CFileDialog::CFileDialog(BOOL bOpenFileDialog, //为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框LPCTSTR ...

  4. MFC初探 —— 文件与文件夹的选择与拷贝

    一.选择文件 其中CFileDialog类中的参数OFN_ALLOWMULTISELECT表示多个文件的选择,若只需要选择一个文件,删除该参数即可. /// <summary> /// 选 ...

  5. 选择文件对话框、保存文件对话框、选择文件夹对话框

    选择文件对话框 // 设置图像文件过滤格式CString lv_strFilterAll = _T("所有文件(*.*)|*.*||");CString lv_strFilterJ ...

  6. NX二次开发-UFUN打开选择文件夹对话框UF_UI_create_filebox

    NX二次开发-UFUN打开选择文件夹对话框UF_UI_create_filebox #include <uf.h> #include <uf_ui.h> #include &l ...

  7. QML 打开文件夹对话框选择文件保存路径

    import QtQuick 2.14 import QtQuick.Controls 2.14 import Qt.labs.platform 1.0ApplicationWindow {visib ...

  8. MFC获取文件及文件夹

    前言: 转载请附上连接,本帖原创请勿照抄. 主界面: .h文件 // Test_FileDlg.h: 头文件 //#pragma once// CTestFileDlg 对话框 class CTest ...

  9. VS2010/MFC编程入门之十七(对话框:文件对话框)

    上一讲鸡啄米介绍的是消息对话框,本节讲解文件对话框.文件对话框也是很常用的一类对话框. 文件对话框的分类       文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统中经常见 ...

  10. VC++打开、保存文件对话框和浏览文件夹对话框

    一.打开文件夹: 1.CFileDialog实现 CFileDialog hFileDlg(true,NULL ,    NULL,    OFN_FILEMUSTEXIST | OFN_READON ...

最新文章

  1. 维护窗口和停机时间 可用率99.99%
  2. go get 获取被墙依赖包解决方法
  3. 医学影像设备学_【技士/师证考试宝典】第四篇 医学影像设备学2
  4. MySQL - 并发事务问题及解决方案
  5. 用户登录成功后才进入主窗口进行其他操作
  6. php strstr 从尾部,PHP strstr() 和 strrchr() 详解
  7. ubuntu开机时网络图标不见了且不能上网
  8. jquery的ajax用法
  9. Linux安装SQLite轻量级数据库
  10. “SCSA-S学习导图+”系列:Windows下的WEB系统环境搭建
  11. python贝叶斯网络预测模型_高效灵活的概率建模方法基于Python
  12. A40i使用笔记:使用QT调用aplay播放wav音频/混音
  13. js实现canvas在线画板
  14. 如何提高思考能力,(一个绝对能帮到你的科普)取自《思维混乱:是因为大脑没有结构》谢春霖
  15. Android 11.0 12.0默认开启开发者模式和开启usb调试模式
  16. MySQL表空间碎片
  17. 融创孙喆一:父辈的光环与阴影下,我反对扮演所谓的二代
  18. 2022-11 | Redis命令SET SETEX SETNX语法及描述
  19. YUV 420 444 421 422 的正解(转载)
  20. 《针灸》笔记(倪海厦先生人纪系列针灸篇——综合)

热门文章

  1. 计算机网络——网线制作和局域网组建
  2. 牵引变压器短路阻抗定义及相关参数计算
  3. 烽火计划项目成果-目录索引
  4. idea中使用eclipse快捷键的常用快捷键
  5. JConsole使用教程
  6. Ubuntu软件下载速度慢解决
  7. 云计算ACP认证考试题库之101-200
  8. CTF解题记录-Misc-百度识图
  9. 安装 Northwind 示例数据库
  10. 独立站开发优化问题?