使用类CFileDialog支持文件多选代码如下:
void mutiSel()
{
TCHAR szFilters[]= _T("avi files (*.avi)|*.avi|mpg files (*.mpg;*.mp4)|*.mpg;*.mp4|All Files (*.*)|*.*||");
CFileDialog dlg(TRUE, _T("avi"), _T("*.avi"),OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, szFilters);
const int c_cMaxFiles = 100;
const int c_cbBuffSize = (c_cMaxFiles * (MAX_PATH + 1)) + 1;
dlg.GetOFN().lpstrFile = fileName.GetBuffer(c_cbBuffSize);
dlg.GetOFN().nMaxFile = c_cbBuffSize;
dlg.GetOFN().Flags |= OFN_ALLOWMULTISELECT;
if (dlg.DoModal()==IDOK)
{
std::vector<CString> vVideoFileLst;
POSITION pos = dlg.GetStartPosition();
while (pos != NULL)
{
CString szPathName = dlg.GetNextPathName(pos);
vVideoFileLst.push_back(szPathName);
if (vVideoFileLst.size()>c_cMaxFiles)
{
fileName.ReleaseBuffer();
return;
}
}
fileName.ReleaseBuffer();
}