解决MFC不能进行多文件选择的问题

在使用CFileDialog进行多文件选择时,默认情况下选择文件的个数是有限制的。有很多方法解决这个问题,大致是开辟空间,下面这个方法自己测试是OK的。但原出处不详,如有冒犯请联系本人。

//CFileDialog类设置OFN_ALLOWMULTISELECT 标志可以实现文件多选功能,但是文件的数量是有限制的,如果要突破这个限制,就必须自己提供缓冲区。例子如下:


CString fileExtensions = "jpg文件(*.jpg) |*.jpg||";

CFileDialog fileDlg(TRUE,

                           NULL,

                           NULL,

                           OFN_ALLOWMULTISELECT | OFN_ENABLESIZING | OFN_HIDEREADONLY,

                            fileExtensions);

const int MIN_FILE_NUMBER = 10;                                                           //至少允许选择10个文件

fileDlg.m_ofn.lpstrFile = new TCHAR[_MAX_PATH * MIN_FILE_NUMBER]; //重新定义缓冲区大小

memset(fileDlg.m_ofn.lpstrFile, 0, _MAX_PATH * MIN_FILE_NUMBER);  //初始化定义的缓冲区

fileDlg.m_ofn.nMaxFile = _MAX_PATH * MIN_FILE_NUMBER;



if (IDOK == fileDlg.DoModal())

{

     POSITION pos = fileDlg.GetStartPosition();

     while (NULL != pos)

     {

            TRACE(fileDlg.GetNextPathName(pos));                                //获取文件名

            //使用文件...

      }

}


delete[] fileDlg.m_ofn.lpstrFile;     //最后别忘了释放内存

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值