我的文件选择对话框定义如下CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT, "所有文件(*.*)|*.*||"); 也就是可以让用户选择多个文件,但是我怎样得到用户选择的文件名,我看了MSDN 但看不懂。大家帮我啊 谢谢啊

解决方案 »

  1.   

    这种风格的Open dialog返回的是一个字符串,包含文件的路径以及所有选择的文件的文件名序列.你可以自己用字符串函数分解也可以使用GetStartPosition获得第一个文件名起始的位置,然后用在一个循环中其传址为参数调用GetNextPathName获取下一个文件及路径名
      

  2.   

    /打开文件对话框
    static char BASED_CODE szFilter[] = "文本文件(*.txt)|*.txt|所有文件|*.*|";
    CFileDialog dlg(TRUE,"*.txt",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter,NULL);
    if(dlg.DoModal()!=IDOK) return;
    CString fOpen=dlg.GetPathName(); //文件路径
      

  3.   

    CString szFileFilter=
               "mp3 file(*.mp3)|*.mp3|"
       "dat file(*.mp3)|*.dat|"
       "wav file(*.wav)|*.wav|"
       "mpg file(*.mpg)|*.mpg|"
       "All files(*.*)|*.*|";TCHAR* szSelections=NULL;CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,(LPCSTR)szFileFilter,this);szSelections=new TCHAR[1000];
    memset(szSelections,NULL,1000);
    dlg.m_ofn.lpstrFile=szSelections;
    dlg.m_ofn.nMaxFile=1000;
    if(dlg.DoModal()==IDOK)
    {   
    POSITION pos;
             m_control.SetFileName(NULL);
        m_List.ResetContent();
        CString filename;
        for(pos=dlg.GetStartPosition();pos;)
    {
        CString str;
    str=dlg.GetNextPathName(pos);
         
    m_List.AddString(str);//m_List是ListBox的控制变量
    //你可以把文件名放到ListBox中,需要的时候再从里边取出来.
        
    }

    m_count=m_List.GetCount();  }