hur.cn - 华软网

 热门搜索

CFileDialog类支持选择10000个以上文件吗??

  作者:未知    来源:网络    更新时间:2011/6/11
我这么写了对吗?因为看到帮助文档上写着:When the user allocates their own buffer to accommodate OFN_ALLOWMULTISELECT, the buffer cannot be larger than 2048 or else everything gets corrupted (2048 is the maximum size).
它说才2048个,还是buffer只能设置2048,把我搞糊涂了。网上看到一大堆人再说这个类选择多文件时会有限制,是真的吗?请大家帮助解答,谢谢!

CFileDialog dlg(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT);
TCHAR   *pBuffer   =   new   TCHAR[MAX_PATH   *   10000];//max files are 10000?
wmemset(pBuffer,0,MAX_PATH   *   10000);
dlg.m_ofn.lpstrFile   =   pBuffer; 
dlg.m_ofn.nMaxFile   =   10000*MAX_PATH; 
dlg.m_ofn.lStructSize   =   88; 

int i=0;
if( dlg.DoModal() == IDOK )
{
POSITION iPos=dlg.GetStartPosition(); 
TCHAR* szMsg = new TCHAR[MAX_PATH];
while(iPos!=NULL) 
        {
i ++;
CString strTmp = dlg.GetNextPathName(iPos);
m_strFilePathName.push_back(strTmp);
}
return TRUE;
}
---华软 网友回答---
后面再多一个0都能做到
---华软网友回复---
谢谢!
---华软网友回复---
请问 他说的2048是什么意思?
---华软网友回复---
要做什么东西? 这么BT
---华软网友回复---
buffer只能设置2048;可能SDK是这样
---华软网友回复---
但是我的都已经 TCHAR *pBuffer = new TCHAR[MAX_PATH * 10000];//max files are 10000?
那换句话说,这里只要TCHAR *pBuffer = new TCHAR[2048];  ?? 是这样吗?
---华软网友回复---
搞那么大做什么?链表什么的不可以用吗
---华软网友回复---
http://topic.csdn.net/u/20110420/16/28e2c678-f653-4223-aa49-542465f45115.html?58254
---华软网友回复---
引用 7 楼 yf882 的回复:
搞那么大做什么?链表什么的不可以用吗

只是想这个CFileDialog类应该没这么脆弱吧,连几万个文件都不能同时选中。没别的用途,只是想能同时选中不论多少文件。
---华软网友回复---
引用 8 楼 waistcoat22 的回复:
http://topic.csdn.net/u/20110420/16/28e2c678-f653-4223-aa49-542465f45115.html?58254

我的实验结果好像比这个网页上说的人多么,我起码可以同时选中10000个文件,我测试过。不过文件名不是很长的那种。
---华软网友回复---
假如你有看过WTL8.0以上的版本,在里边的atldlgs.h文件里边搜索CFileMutilDiglog这个类,这是关于打开多个文件的,里边的详细实现可以更权威更一些,可以让你学到很多,不妨看下,那个头文件可以在网上下,也可以跟我要,只要你有兴趣!
---华软网友回复---
引用 11 楼 gibsonboy 的回复:
假如你有看过WTL8.0以上的版本,在里边的atldlgs.h文件里边搜索CFileMutilDiglog这个类,这是关于打开多个文件的,里边的详细实现可以更权威更一些,可以让你学到很多,不妨看下,那个头文件可以在网上下,也可以跟我要,只要你有兴趣!
非常感谢,我知道怎么做了!      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。