CFileDialog只能选择文件,选择一个文件夹用什么?

解决方案 »

  1.   

    CString strResult;

    LPMALLOC lpMalloc;
    if (::SHGetMalloc(&lpMalloc) != NOERROR)
    {
    return;
    }

    char szDisplayName[_MAX_PATH];
    char szBuffer[_MAX_PATH];

    BROWSEINFO browseInfo;
    browseInfo.hwndOwner = m_hWnd; // set root at Desktop
    browseInfo.pidlRoot = NULL; 
    browseInfo.pszDisplayName = szDisplayName; 
    browseInfo.lpszTitle = "选择数据源所在目录:";
    browseInfo.ulFlags = 0;
    browseInfo.lpfn = NULL;
    browseInfo.lParam = 0;
    LPITEMIDLIST lpItemIDList;

    if ((lpItemIDList = ::SHBrowseForFolder(&browseInfo)) != NULL)
    {
    if (::SHGetPathFromIDList(lpItemIDList, szBuffer))
    {
    if (szBuffer[0] == '\0')
    {
    return;
    }
    strResult = szBuffer;
    }
    else
    {
    return;
    }
    lpMalloc->Free(lpItemIDList);
    lpMalloc->Release();
    }
    else
    {
    return;
    }
      

  2.   

    agree with upstairs or use IShellBroswse