CFileDialog直接选中文件夹是不能按确定打开的,他必须定位一个文件才能打开,我想实现象ACDsee打开文件夹那样的功能,就是只需得到文件夹的路径而不需要打开它里面的文件该怎么做呀?

解决方案 »

  1.   

    打开文件夹用  SHBrowseFolder
      

  2.   

    用SHBrowseFolder的SHGetPathFromIDList
      

  3.   

    1.如何显示选择文件夹的对话框.
    调用API函数, WINSHELLAPI LPITEMIDLIST WINAPI SHBrowseForFolder(
    LPBROWSEINFO lpbi); 
    其参数lpbi成员的意义为(参照下图)
    hwndOwner          : 父窗口的句柄.PidlRoot           : 根目录.PszDisplayName     : 用户选择的文件夹.lpszTitle          : 标题ulFlags            : 风格lpfn               : 回调函数lParam             : 回调函数的参数.
    iImage              : 用户选择的文件夹的图标.
      

  4.   

    BROWSEINFO bInfo;
    ZeroMemory(&bInfo, sizeof(bInfo));
    bInfo.hwndOwner = m_hWnd;
    TCHAR tchPath[255];
    bInfo.lpszTitle = _T("所选择路径: ");
    bInfo.ulFlags = BIF_RETURNONLYFSDIRS;    

    LPITEMIDLIST lpDlist;
    //用来保存返回信息的IDList,使用SHGetPathFromIDList函数转换为字符串
    lpDlist = SHBrowseForFolder(&bInfo) ; //显示选择对话框
    if(lpDlist != NULL)
    {
    SHGetPathFromIDList(lpDlist, tchPath);//把项目标识列表转化成目录
    TRACE(tchPath);
    }