已经实现了选择多个文件,但是我还想选择目录,怎么办?

解决方案 »

  1.   

    没有办法用默认的文件对话框选择目录。单选目录:
    char buffer[MAX_PATH];
    BROWSEINFO m_pbi ; ::ZeroMemory(&m_pbi, sizeof(BROWSEINFO));
    m_pbi.hwndOwner = GetSafeHwnd();
    m_pbi.pszDisplayName = buffer;
    m_pbi.lpszTitle = "";
    m_pbi.ulFlags = BIF_RETURNONLYFSDIRS; ITEMIDLIST *idl = SHBrowseForFolder(&m_pbi);
    if (idl)
    {
    SHGetPathFromIDList (idl, buffer);
    } 多选目录要自己做。
      

  2.   

    我估计也是。
    现在正在自己做一个list,显示某一目录下的文件和子目录。
    顺便问一句,如和判断一个全路径到底是目录还是文件?
      

  3.   

    GetFileAttributes() & FILE_ATTIRBUTE_DIRECTORY  // directory
      

  4.   

    CFileFind::IsDirectoryMSDN中的例子:#include <afx.h>
    #include <iostream>using namespace std;void Recurse(LPCTSTR pstr)
    {
       CFileFind finder;   // build a string with wildcards
       CString strWildcard(pstr);
       strWildcard += _T("\\*.*");   // start working for files
       BOOL bWorking = finder.FindFile(strWildcard);   while (bWorking)
       {
          bWorking = finder.FindNextFile();      // skip . and .. files; otherwise, we'd
          // recur infinitely!      if (finder.IsDots())
             continue;      // if it's a directory, recursively search it      if (finder.IsDirectory())
          {
             CString str = finder.GetFilePath();
             cout << (LPCTSTR) str << endl;
             Recurse(str);
          }
       }   finder.Close();
    }void main()
    {
       if (!AfxWinInit(GetModuleHandle(NULL), NULL, GetCommandLine(), 0)
          cout << "panic!" << endl;
       else
          Recurse(_T("C:"));
    }