跟不可思议的圣剑一样:VC打开多个文件

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 06:23:49
我将CFileDialog设为可以多选多个文件,不过发现那个m_ofn中的nMaxfile值的默认为260,这样不能一次选多个,它有个限制,我自己给它赋了个比较大的值,可发现没有用,应该怎么办才能做到一次性可以全选,不管有多少个文件关键是要提供一块缓冲区给CFileDialog使用。即: 
dlg.m_ofn.lpstrFile   =   new   CHAR[MAX_FILE_LEN]; 
例如: 
void   CHtml2txtDlg::OnOpen()   

CFileDialog   dlg(TRUE,   //   Open 
NULL,   //   缺省扩展名 
NULL,   //   缺省文件名 
NULL,   //   选项 
"HTML   Files   (*.html;*.htm)|*.html;   *.htm|| ",   //   文件过滤器 
NULL   );   //   父窗口 
const   int   MAX_FILE_LEN   =   100000; 

dlg.m_ofn.Flags   |=   OFN_ALLOWMULTISELECT; 
dlg.m_ofn.lpstrFile   =   new   CHAR[MAX_FILE_LEN]; 
dlg.m_ofn.lpstrFile[0]   =   0; 
dlg.m_ofn.nMaxFile   =   MAX_FILE_LEN; 

if   (dlg.DoModal()==IDOK)   { 
htmlStrings.RemoveAll(); 
POSITION   pos   =   dlg.GetStartPosition(); 
while   (pos   !=   NULL)   { 
htmlStrings.AddTail(dlg.GetNextPathName(   pos   )); 

int   cnt   =   fillList(m_htmlList,   htmlStrings); 
if   (   cnt   >   0   )   { 
CString   str   =   htmlStrings.GetHead(); 
GetDlgItem(IDC_PATH)-> SetWindowText(str.Left(str.ReverseFind( '\\ ')+1)); 



delete   []   dlg.m_ofn.lpstrFile;