In my attempt to capture multiple files using CFileDialog I discovered that there is a limit on the number of characters in the file name buffer. See http://support.microsoft.com/kb/179372
I have used this code to get the file names and it works fine up to the point where the buffer is full. NB: m_vcsPathnames and m_vcsFilenames are std::vector<CString> types.
I really need to be able to capture very large numbers of files. Is there any possible work around for this limitation, other than completely writing my own CFileDialogExx class ?Code:// get a list of the files to process wchar_t szFilters[]= _T("All Files (*.*)|*.*||"); // Create an Open dialog; the default file name extension "*.*" CFileDialog fileDlg(TRUE, _T(""), _T("*.*"), OFN_FILEMUSTEXIST| OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT, szFilters, this); m_vcsPathnames.resize(0); m_vcsFilenames.resize(0); if( fileDlg.DoModal ()==IDOK ) { POSITION pos (fileDlg.GetStartPosition() ); while( pos ) { CString csPathname( fileDlg.GetNextPathName( pos ) ); int n = csPathname.ReverseFind('\\'); CString csFilename = csPathname.Right(csPathname.GetLength() - n - 1); TRACE0("csFilename =: "); OutputDebugString(csFilename); TRACE0("\n"); m_vcsPathnames.push_back(csPathname); m_vcsFilenames.push_back(csFilename); } }




Reply With Quote