就是用::SHBrowseForFolder弹出来的,用于选择目录的对话框,
我想要展开一颗以桌面为根,可以随意指定初始目录的树,
通过设置什么参数可以做到这点????

解决方案 »

  1.   

    #include <windows.h>
    #include <objbase.h>
    #include <shlobj.h>int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow)
    {
      // TODO: Place code here.
             CoInitialize(0);
    IShellFolder* pDesktop=NULL;
    SHGetDesktopFolder(&pDesktop);
    LPITEMIDLIST pid=NULL;
    pDesktop->ParseDisplayName(NULL,NULL,L"d:\\abc",NULL,&pid,NULL);
    pDesktop->Release();
    BROWSEINFO bi={0};
             bi.pidlRoot = pid;
             bi.lpszTitle = "Choose a folder";
             LPITEMIDLIST pidSelected=SHBrowseForFolder(&bi);
      //处理pidSelected
    LPMALLOC pMalloc;
             SHGetMalloc(&pMalloc);
    pMalloc->Free(pid);
    pMalloc->Free(pidSelected);
    return 0;
    }
      

  2.   

    还是和以前的一样,初始目录是可以选了,但整棵文件树的根也被设置为这个初始目录了。比如像这个程序,选了d:\abc做初始目录,就不能在列表了看到别的盘或者不在d:\abc下面的目录了。
    目录树的根能不能固定在“桌面”?而能够选初始目录?
      

  3.   

    如果你用MFC的话,可以用CFileDialog;否则你可能要自己做一个对话框了。
      

  4.   

    CFileDialog不是只能选文件不能选目录吗,怎么做?
      

  5.   

    留个信箱,我给个类你。十分方便。
    QQ59377629
    [email protected]
      

  6.   

    谢谢先~~~~~
    [email protected]