需要一个特制的打开文件对话框,使用老式风格(驱动器下拉列表,目录列表框),另外增加一个listbox用来显示当前选中目录的子目录,提供用户一次从中选择多个子目录的功能,返回这些子目录名。已经使用模板方式构造了新的对话框,只是不知道如何在用户选择目录时控制子目录listbox的变化,以及返回这些子目录。

解决方案 »

  1.   

    CFileDialog本身就可以实现多选功能FIX: Common File Dialog Multiple Selection File Limit 
    Q179372 
      #include "cderr.h" //for definition of FNERR_BUFFERTOOSMALL   CFileDialog   dlg( TRUE, NULL, NULL, OFN_ALLOWMULTISELECT, NULL, NULL );
       DWORD MAXFILE = 2562; //2562 is the max
       dlg.m_ofn.nMaxFile = MAXFILE;
       char* pc = new char[MAXFILE];
       dlg.m_ofn.lpstrFile = pc;
       dlg.m_ofn.lpstrFile[0] = NULL;   int iReturn = dlg.DoModal();
       if(iReturn ==  IDOK)
       {
          int nCount = 0;
          POSITION pos = dlg.GetStartPosition();
          while (pos != NULL)
          {
             dlg.GetNextPathName(pos);
             nCount++;
          }
          CString str;
          str.Format("Successfully opened %d files\n", nCount);
          AfxMessageBox(str);
       }
       else if(iReturn == IDCANCEL)
          AfxMessageBox("Cancel");   if(CommDlgExtendedError() == FNERR_BUFFERTOOSMALL)
          AfxMessageBox("BUFFERTOOSMALL");
       delete []pc;
      

  2.   

    从CFileDialog继承一个新类,添加CListBox成员用来控制你的listbox控件,并用这个类来产生你的文件对话框。
      

  3.   

    不是多选文件,是选择一个目录后,列出它的所有子目录在另一个listbox中,提供用户选择多个子目录,要得到的就是选中的子目录名,新加上的listbox不知道怎样能够在用户选择目录时填写这个listbox中的子目录名。
      

  4.   

    webber84(糕鱼昏) 大哥请详细讲讲,我用VC没多久,还有怎样控制填写这个listbox呢。