我想在程序中可以选择一个路径来存储文件,
用什么控件或者类!
谢谢!

解决方案 »

  1.   

    BROWSEINFO bi;
    char buffer[MAX_PATH];
    ZeroMemory(buffer, MAX_PATH);
    bi.hwndOwner = GetSafeHwnd();
    bi.pidlRoot = NULL;
    bi.pszDisplayName = buffer; bi.lpszTitle = "选择一个文件夹";
    bi.ulFlags = BIF_EDITBOX;
    bi.lpfn = NULL;
    bi.lParam = 0;
    bi.iImage = 0; LPITEMIDLIST pList = NULL;
    if ((pList = SHBrowseForFolder(&bi)) != NULL)
    {
    char path[MAX_PATH];
    ZeroMemory(path, MAX_PATH);
    SHGetPathFromIDList(pList, path);
                      //path就是選中的目錄
    }
      

  2.   

    老兄,可是我看不懂你写的代码啊,我是想点一下“浏览”按钮就弹出选择路径的对话框,就象CFileDialog类那样啊
      

  3.   

    sorry,你的直接可以用,呵呵,不过我想问,有没有那种象XP那样,有“新建文件夹”按钮的?
      

  4.   

    http://www.codeguru.com/Cpp/W-D/dislog/dialogforselectingfolders/article.php/c4999/
    http://www.codeguru.com/Cpp/W-D/dislog/dialogforselectingfolders/article.php/c1885/
    http://www.codeguru.com/Cpp/W-D/dislog/dialogforselectingfolders/article.php/c2025/
    http://www.codeguru.com/Cpp/W-D/dislog/dialogforselectingfolders/article.php/c2019/
      

  5.   

    一樓的弟兄說的不錯啊!!
    下面給出我的代碼:
    void CWebProtectDlg::OnSellogpath() 
    {
    char Name[MAX_PATH];
    LPITEMIDLIST pItemList;
    BROWSEINFO bi;
    bi.hwndOwner = this->m_hWnd;
    bi.lpszTitle = "请选择日志文件路径";
    bi.pidlRoot = NULL;
    bi.pszDisplayName = Name;
    bi.ulFlags = BIF_RETURNONLYFSDIRS;// | BIF_NONEWFOLDERBUTTON;
    bi.lpfn = NULL;
    bi.lParam = NULL;
    pItemList = SHBrowseForFolder(&bi);
    if(pItemList)//User pressed OK.
    {
    SHGetPathFromIDList(pItemList, Name);
    //取得文件夹路径到Name里
    m_LogPath = Name;//将路径保存在一个CString对象里
    }
    LPMALLOC lpMalloc;
    if(FAILED(SHGetMalloc(&lpMalloc))) return;
    //释放内存
    lpMalloc->Free(pItemList);
    lpMalloc->Release();
    UpdateData(FALSE);
    }以上我代碼,是我從我從寫過的一個小東東裏面截出來的。
    測試是完全沒有問題的