想直接浏览选定一个目录。
如果用CFileDialog,必须选择一个文件才行,还要经过子符串相减。
好象Windows里很多程序可以直接指定目录,请问该如何实现?
多谢高手。

解决方案 »

  1.   

    参昭MSDN   SHBrowseForFolder
      

  2.   

    CString WINAPI GetPathFromFolder(CWnd* pWnd)
    {
    LPMALLOC pMalloc;
    if (::SHGetMalloc(&pMalloc) == NOERROR)
    {
    BROWSEINFO bi;
    char pszBuffer[MAX_PATH];
    LPITEMIDLIST pidl;
    bi.hwndOwner = pWnd->GetSafeHwnd();
    bi.pidlRoot = NULL;
    bi.pszDisplayName = pszBuffer;
    bi.lpszTitle = _T("Select a Starting Directory");
    bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
    bi.lpfn = NULL;
    bi.lParam = 0;
    if ((pidl = ::SHBrowseForFolder(&bi)) != NULL)
    {
    if (::SHGetPathFromIDList(pidl, pszBuffer))

    return pszBuffer;
    }
    pMalloc->Free(pidl);
    }
    pMalloc->Release();
    }
    return "";
    }
      

  3.   

    参考:
    http://www.codeguru.com/files/getFolder.html