我將CFileDialog設(shè)為可以多選多個(gè)文件,,不過發(fā)現(xiàn)那個(gè)m_ofn中的nMaxfile值的默認(rèn)為260,,這樣不能一次選多個(gè),,它有個(gè)限制,我自己給它賦了個(gè)比較大的值,,可發(fā)現(xiàn)沒有用,,應(yīng)該怎么辦才能做到一次性可以全選,,不管有多少個(gè)文件
關(guān)鍵是要提供一塊緩沖區(qū)給CFileDialog使用。即:
dlg.m_ofn.lpstrFile = new CHAR[MAX_FILE_LEN]; 例如: void CHtml2txtDlg::OnOpen() { CFileDialog dlg(TRUE, // Open NULL, // 缺省擴(kuò)展名 NULL, // 缺省文件名 NULL, // 選項(xiàng) "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; } |
|