MFC 的文件选择对话框一次最多选择几个文件

edwardliqi 2013-11-22 02:25:39
我全选的时候明显不行,貌似最多只能选6个?


怎么能全选,并且之后能得到他们的文件名?
...全文
306 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
edwardliqi 2013-12-05
  • 打赏
  • 举报
回复
但是msdn上有bug,示例代码有误

CFileDialog dlgFile(TRUE);
CString fileName;
const int c= 100;
const int c_cbBuffSize = (c_cMaxFiles * (MAX_PATH + 1)) + 1;
dlgFile.GetOFN().lpstrFile = fileName.GetBuffer(c_cbBuffSize);
dlgFile.GetOFN().nMaxFile = c_cbBuffSize ;//nMaxFiLe实际上是BUFFER长度,而不是文件数量,所以这里如果写cMaxFiles,只能得到很少的文件

dlgFile.DoModal();
fileName.ReleaseBuffer();


edwardliqi 2013-12-05
  • 打赏
  • 举报
回复
多谢楼上几位大哥
Sandrer 2013-11-22
  • 打赏
  • 举报
回复
表面上是无限选择,当前文件夹无论有多少文件都能可以一次选择 但主要是选择后的返回值控制 对话框会把你选择的所有文件名放在你所提供的缓冲区中,只要缓冲区够大就OK了 但是如果你不确定用户会选择多少个文件,不知道应该提供多大的缓冲区的话 你最好是麻烦点,把对话框 HOOK 掉,OPENFILENAME 结构体中有个成员 lpfnHook,就是给你放置一个回调函数的,你可以根据回调信息来改变缓冲区信息
threenewbee 2013-11-22
  • 打赏
  • 举报
回复
CFileDialog dlgFile(TRUE); CString fileName; const int c_cMaxFiles = 100; const int c_cbBuffSize = (c_cMaxFiles * (MAX_PATH + 1)) + 1; dlgFile.GetOFN().lpstrFile = fileName.GetBuffer(c_cbBuffSize); dlgFile.GetOFN().nMaxFile = c_cMaxFiles; dlgFile.DoModal(); fileName.ReleaseBuffer(); 这就可以选择100个。
threenewbee 2013-11-22
  • 打赏
  • 举报
回复
设置nMaxFile http://msdn.microsoft.com/zh-cn/library/wh5hz49d(v=vs.90).aspx

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧