CFileDialog ofOpen(true);
ofOpen.m_ofn.Flags^=OFN_ENABLESIZING;
ofOpen.m_ofn.Flags|=OFN_ALLOWMULTISELECT;
ofOpen.m_ofn.lpstrFilter="所有网页文件\0*.asp;*.htm;*.html;*.php\0";
if(ofOpen.DoModal()==IDOK)
{
POSITION pos=ofOpen.GetStartPosition();
LVITEM lvFile;
int countPos = m_lcFileList->GetItemCount();
int TotalCount = countPos;
CString strFileName;
while(pos)
{
strFileName = ofOpen.GetNextPathName(pos);
if(strFileName=="")break;
if(CompListFile(strFileName,TotalCount))
{
lvFile.mask=LVIF_TEXT | LVIF_IMAGE;
strFileList[countPos++]=strFileName;
int nPos = strFileName.ReverseFind('\\');
lvFile.pszText = (LPTSTR)(const char*)strFileName.Right(strFileName.GetLength()-nPos-1);
lvFile.iItem=countPos;
lvFile.iSubItem = 0;
lvFile.iImage = 0;
m_lcFileList->InsertItem(&lvFile);
}
};
}

解决方案 »

  1.   

    可以设置OFN_ALLOWMULTISELECT属性
    得到文件的名称,有GetStartPosition可以得到列表
      

  2.   

    代码已经够完整了吧?
    我用的是ListCtrl
    其实与ListBox差不多
      

  3.   

    注意!
    CompListFile(?,?)是我自己建的方法,主要负责列表中是否已经存在该文件名
    取对话框里的文件名主要用
    GetStartPosition()
    GetNextPathName(pos)
    执行一次 GetNextPathName pos 自动会变为下一个项的位置,不用手工改变
    如果pos为NULL则取完文件名了
      

  4.   

    同意楼上的两位的说设置OFN_ALLOWMULTISELECT,好象还要将存放文件名的字符串传给m_ofn.lpstrFile并设置m_ofn.nMaxFile = 1024,然后用GetStartPosition()和GetNextPathName()即可。
      

  5.   

    关于filedialog 和 listbox ,请给个访问所选多个文件的代码!