MFC中使用CFileDialog可以批量选择文件的代码

作者: 王中王开奖结果计算机  发布:2019-09-24
//同时打开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;
}

本文由王中王开奖结果发布于王中王开奖结果计算机,转载请注明出处:MFC中使用CFileDialog可以批量选择文件的代码

关键词:

上一篇:操作的封装小结
下一篇:没有了