请问MFC中选择路径的对话框是用那个类?我知道选择文件是用CFileDialog,但是选择路径的对话框使用那个类忘了,以前是见过的。请问那位知道?

解决方案 »

  1.   

    一个api SHBrowseForFolder 列出树
    http://msdn.microsoft.com/en-us/library/bb762115(VS.85).aspx
      

  2.   

    这个我记得好像没有专门的像CFileDialog的类
      

  3.   


    有的,列出来就是一个tree的窗口。
      

  4.   

    XFolderDialog,新式目录选择框
    http://blog.csdn.net/DavidHsing/archive/2009/03/10/3977589.aspx
      

  5.   

    char Dir[100];
    ITEMIDLIST *pidl;bi.hwndOwner = NULL;
    bi.pidlRoot = NULL;
    bi.pszDisplayName = Dir;
    bi.lpszTitle = "选择一个目录";
    bi.ulFlags = BIF_RETURNONLYFSDIRS;
    bi.lpfn = NULL;
    bi.lParam = 0;
    bi.iImage = 0;pidl = SHBrowseForFolder( &bi );
    if( pldl == NULL ) Dir[0]=0;
    if(!SHGetPathFromIDList( pidl, Dir )) Dir[0]=0;
      

  6.   

    /*
    * 函数功能:选择目录
    *  参数说明:m_hWndParam,窗口
    *            strReturn,[out]路径
    *  返回值:TRUE,表示选择目录;FLASE,没有选择目录
    */
    BOOL GetDirectionBySelectDlg(HWND m_hWndParam,CString & strReturn)
    {
    BOOL bR = TRUE;
    BROWSEINFO bi;
    TCHAR Buffer[MAX_PATH];
    memset(Buffer,0,MAX_PATH*sizeof(TCHAR));
    TCHAR FullPath[MAX_PATH];
    memset(FullPath,0,MAX_PATH*sizeof(TCHAR)); 
    bi.hwndOwner = m_hWndParam;
    bi.pidlRoot = NULL;
    bi.pszDisplayName = Buffer;
    bi.lpszTitle = "选择目录";
    bi.ulFlags = BIF_RETURNONLYFSDIRS;
    bi.lpfn = NULL;
    bi.lParam = 0;
    bi.iImage = 0;
    ITEMIDLIST *pidl = ::SHBrowseForFolder(&bi);//显示弹出窗口
    if(::SHGetPathFromIDList(pidl,FullPath))
    {
    strReturn = FullPath;
    bR = TRUE;
    }
    else
    {
    strReturn = "";
    bR = FALSE;
    }
    return bR;
    }
      

  7.   

    BROWSEINFO bi;
        ZeroMemory(&bi,sizeof(BROWSEINFO));
        LPMALLOC pMalloc;
        LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
        TCHAR * path = new TCHAR[MAX_PATH];
        if(pidl != NULL)
        {
            SHGetPathFromIDList(pidl,path);
            if(strcmp(path,"")!=0)
    {
    SetDlgItemText(IDC_EDIT2,path);
    }
            if(SUCCEEDED(SHGetMalloc(&pMalloc)))
            {
                pMalloc->Free(pidl);
                pMalloc->Release();
            }
        }
        delete path;//
      

  8.   

    肯定没有像CFileDialog这样专门的类!