我将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; } |
|