mfcCFileDialog类多文件的选择和解析

/*
1.创建支持多文件的CFileDialog的对象
2.定义最多可以打开的文件数并内存块清零
3.调用DoMdal()显示对话框
4.获取第一个文件的路径和文件名并放入到容器中
5.获取下一个文件的路径和文件名并放入到容器中直到最后一个
*/
注:以下代码在一个响应按钮消息的函数中
m_strPath记录文件的路径类型vector<CString>,m_MusicName记录文件的名称类型
是vector<CString>.
    CString pathName, fileName;
    char* filters = _T("mp3文件(*.mp3)|*.mp3");
    //创建一个可以选择多个文件的CFileDialog  
    CFileDialog fileDlg(true, NULL, "*.mp3", OFN_ALLOWMULTISELECT | OFN_ENABLESIZING | OFN_HIDEREADONLY, filters);
    //最多可以打开500个文件  
    fileDlg.m_ofn.nMaxFile = 500 * MAX_PATH;
    char* ch = new TCHAR[fileDlg.m_ofn.nMaxFile];
    fileDlg.m_ofn.lpstrFile = ch;
    //对内存块清零  
    ZeroMemory(fileDlg.m_ofn.lpstrFile, sizeof(TCHAR)* fileDlg.m_ofn.nMaxFile);
    //显示文件对话框,获得文件名集合  
    if (fileDlg.DoModal() == IDOK){
        //获取第一个文件的位置  
        POSITION pos_file;
        pos_file = fileDlg.GetStartPosition();
        //用CString数组存放文件的路径  
        //CArray<CString, CString> ary_filename;
        //存放文件的标题  
        //CArray<CString, CString> ary_fileTitle;
        int m_Count=-1;
        //循环读出每个路径并存放在数组中  
        while (pos_file != NULL){
            //将文件路径存放在数组中  
            pathName = fileDlg.GetNextPathName(pos_file);
            //ary_filename.Add(pathName);
            m_strPath.push_back(pathName);
            //获取文件名  
            //从字符串的后面往前遍历,如果遇到'\'则结束遍历,'\'右边的字符串则为文件名  
            int length = pathName.GetLength();
            CString compare = "\\";
            for (int i = length - 1; i>0; i--)
            {
                if (pathName. GetAt(i) == compare)  
                {//判断当前字符是否是'\'  
                    fileName = pathName.Right(length - i - 1);
                    m_MusicName.push_back(fileName);
                    m_Count++;
                    m_List_Ctrl.InsertItem(m_Count,fileName);
                    break;//跳出循环  
                }
            }  
        }
    }
    delete[] ch;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值