我在做一个 打包软件现在问题是如何得到一个目录:恩. 比如. CFileDialog 可以打开一个选择文件的对话框.然后选择一个文件,点OK 
    就可以得到这个文件的路径
现在我要的不是文件而是 目录
达到的效果是;点一个按纽 打开一个 对话框.然后选择一个目录(点一个目录).返回得到目录的路径
如何做呢.PS: 象 winamp 添加目录那样,可以选择一个目录:)

解决方案 »

  1.   

    可以CString sFolderPath;
    BROWSEINFO bi;
    char Buffer[MAX_PATH];
    // 初始化入口参数bi开始
    bi.hwndOwner = this->m_hWnd;
    bi.pidlRoot = NULL;
    bi.pszDisplayName = Buffer; // 此参数如为NULL则不能显示对话框
    bi.lpszTitle = "选择存储输出文件的文件夹。";
    bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
    bi.lpfn = NULL;
    bi.lParam = 0;
    // 初始化入口参数bi结束
    LPITEMIDLIST pIDList = SHBrowseForFolder(&bi); // 调用显示选择对话框
    if(pIDList)
    {
    // 取得文件夹路径到Buffer里
    SHGetPathFromIDList(pIDList, Buffer);
    sFolderPath = Buffer; // 将路径保存在一个CString对象里
    ((CEdit*)GetDlgItem(IDC_PATH))->SetWindowText(sFolderPath);
    }
    LPMALLOC lpMalloc;
    if(FAILED(SHGetMalloc(&lpMalloc))) return;
    // 释放内存
    lpMalloc->Free(pIDList);
    lpMalloc->Release();
      

  2.   

    参考:http://www.xiaozhou.net/cooldog/blogview.asp?logID=89有详细说明