如体

解决方案 »

  1.   

    BROWSEINFO bi;
    char pszBuffer[MAX_PATH];
    LPITEMIDLIST pidl;
    bi.hwndOwner=GetSafeHwnd();
    bi.pidlRoot=NULL;
    bi.pszDisplayName=pszBuffer;
    bi.lpszTitle=_T("Help");
    bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
    bi.lpfn=NULL;
    bi.lParam=0;
    if((pidl=::SHBrowseForFolder(&bi))!=NULL)
    {
    if(::SHGetPathFromIDList(pidl,pszBuffer))
    AfxMessageBox(pszBuffer);
    }///////////////the next part is copied from msdn
    /*{
    LPMALLOC pMalloc;
    if (::SHGetMalloc(&pMalloc) == NOERROR)
    {
    BROWSEINFO bi;
    char pszBuffer[MAX_PATH];
    LPITEMIDLIST pidl;
    bi.hwndOwner = 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))

    // DoingSomethingUseful(pszBuffer);
    AfxMessageBox(pszBuffer);
    }
    pMalloc->Free(pidl);
    }
    pMalloc->Release();
    }
    }*/