现在会用 Cfiledilog 类,但是打开的是  打开文件 对话框,点确定按钮,无法获得文件夹的路径
也会用SHBrowseForFolder,选择文件夹
我现在的需求是 样子要是  CFileDilog 那样的对话框, 但是可以像SHBrowseForFolder那样选择文件夹,得到文件夹的路径,应该如何做呀,求指教

解决方案 »

  1.   

    http://www.codeproject.com/Articles/9865/XFolderDialog-a-folder-selection-dialog-based-on-C
      

  2.   

        CFileDialog dlg(TRUE,
       NULL,
        NULL,
        OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT |OFN_ALLOWMULTISELECT|OFN_ENABLESIZING,
        NULL,
        NULL);
        dlg.DoModal();
      

  3.   


    int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
    {
        if(uMsg==BFFM_SELCHANGED||uMsg==BFFM_INITIALIZED)
        {
            if(uMsg==BFFM_INITIALIZED)
            {
                ::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,
                    LPARAM(lpData));
            }
        }
        return 0;

     TCHAR chPath[255]; //用来存储路径的字符串
     CString strPath = "";
     BROWSEINFO bInfo;
     GetModuleFileName(NULL,chPath,MAX_PATH);
     strPath=chPath;
     ZeroMemory(&bInfo, sizeof(bInfo));
     bInfo.hwndOwner = m_hWnd;
     bInfo.lpszTitle = _T("请选择路径: ");    
     bInfo.ulFlags   = BIF_RETURNONLYFSDIRS|BIF_EDITBOX;
     bInfo.lpfn      = BrowseCallbackProc;
     bInfo.lParam    = (LPARAM)strPath.GetBuffer(strPath.GetLength()); LPITEMIDLIST lpDlist; //用来保存返回信息的IDList
     lpDlist = SHBrowseForFolder(&bInfo) ; //显示选择对话框
     if(lpDlist != NULL)  //用户按了确定按钮
     {
      SHGetPathFromIDList(lpDlist, chPath);//把项目标识列表转化成字符串
      strPath = chPath; //将TCHAR类型的字符串转换为CString类型的字符串
      m_save_path=strPath;
      UpdateData(FALSE);
     }
      

  4.   


    这个例子我看了,好麻烦的说,有没有win32下的例子,我的不是mfc工程呀