CFileDialog选择多个文件

6 篇文章 0 订阅

转自:http://my.csdn.net/shuting_guo/code/detail/8522

C++代码:

//同时打开N个文件
void COpenNFileDlg::OnButton1() 
{
    CString pathName,fileName,fileTitle;
 
    char* filters = _T("PCM文件(*.pcm)|*.pcm");
 
    //创建一个可以选择多个文件的CFileDialog
    CFileDialog fileDlg(true,NULL,"*.pcm",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;
 
        //循环读出每个路径并存放在数组中
        while(pos_file != NULL){
             
            //将文件路径存放在数组中
            pathName = fileDlg.GetNextPathName(pos_file);
            ary_filename.Add(pathName);
             
            //获取文件名 
            //从字符串的后面往前遍历,如果遇到'\'则结束遍历,'\'右边的字符串则为文件名
            int length = pathName.GetLength();      
            for(int i = length -1; i>0;i--)
            {
                if('\' == pathName. GetAt(i))
                {//判断当前字符是否是'\'
                    fileName = pathName.Right(length - i -1);
                    break;//跳出循环
                }
            }//endfor
 
            //获取文件名(不包含后缀)
            //采用CString的Left(int count)截取CString中从左往右数的count个字符
            //fileName.GetLength()-4中的4表示".dat"四个字符
 
            fileTitle = fileName.Left(fileName.GetLength()-4);
            //AfxMessageBox(fileTitle);
            ary_fileTitle.Add(fileTitle);//将文件名(不包含后缀)添加到数组中
        }       
    }
    delete[] ch;
}

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值