CFileDialog无法选择多个文件的解决办法

来源:互联网 发布:网络大电影市场规模 编辑:程序博客网 时间:2024/05/20 02:28

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

例子如下:

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

CFileDialog fileDlg(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT| OFN_ENABLESIZING | OFN_HIDEREADONLY,fileExtensions);

//至少允许选择10个文件

const int MIN_FILE_NUMBER = 10;  

//重新定义缓冲区大小

fileDlg.m_ofn.lpstrFile = newTCHAR[_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;     //最后别忘了释放内存

0 0
原创粉丝点击