问一个:CFileDialog类的多重选择问题!
void CMultiFileDialogView::OnInitialUpdate()
{
CView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
CStringList m_FileNames; // 用于保存选择的多个文件名(包括路径)
CString filter = "所有文件(*.*)|*.*|";
int count = 0;
CString s;
CFileDialog files( TRUE, NULL, NULL, OFN_EXPLORER | OFN_FILEMUSTEXIST
| OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT, filter);
char *bufferFile;
bufferFile = new char[100000];
bufferFile[0] = NULL;
files.m_ofn.lpstrFile = bufferFile;
if (files.DoModal() == IDOK)
{
POSITION pos = files.GetStartPosition();
// 每次打开时清空上一次选择的结果
if (pos != NULL && !m_FileNames.IsEmpty())
m_FileNames.RemoveAll();
// 保存新选择的那些文件名(包括路径)
while (pos != NULL)
{
CString str = files.GetNextPathName(pos);
m_FileNames.AddTail(str);
count++;
}
}
s.Format("%d",count);
MessageBox(s);
/*在小于14个文件的时候都正确,15个以上以上就不行了:(DoModel()返回初始化错误)。查了一下msdn,注意到一个要求,说,需要用户分派一个空间来保存文件,并让lpstrFile指向这个空间,结果试了一下,结果还是如此,怎么回事呢?高人指教!*/
}