见标题;
我现在的通用对话框打开发中能选取文件, 能不能只选文件夹!
我的代码是:         ....
         ofn.hwndOwner          = hwnd ;
      ofn.lpstrFile         = pstrFileName ;
      ofn.lpstrFileTitle    = pstrTitleName ;
      ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT ;//主要是这里要怎么设属性?
     
      GetOpenFileName (&ofn) ;
         ....
请帮解答,谢谢!

解决方案 »

  1.   

    文件夹对话框:
    CString strFolderPath;
    char lpszPath[100];
    LPMALLOC lpMalloc;
    BROWSEINFO sInfo;
    LPITEMIDLIST lpidlRoot;
    LPITEMIDLIST lpidlBrowse;::SHGetMalloc(&lpMalloc);::SHGetSpecialFolderLocation(NULL, CSIDL_DRIVES, &lpidlRoot);::ZeroMemory(&sInfo, sizeof(BROWSEINFO));
    sInfo.pidlRoot = lpidlRoot;
    sInfo.pszDisplayName = lpszPath;
    sInfo.lpszTitle = _T("请选择文件夹:");
    sInfo.ulFlags = BIF_RETURNONLYFSDIRS;
    sInfo.lpfn = _SHBrowseForFolderCallbackProc;lpidlBrowse = ::SHBrowseForFolder(&sInfo);::SHGetPathFromIDList(lpidlBrowse,lpszPath) ;
      

  2.   

    我没有
    BIF_RETURNONLYFSDIRS
    这个属性
    我的结构是OPENFILENAME ofn ;
         
          ofn.lStructSize        = sizeof (OPENFILENAME) ;
          ofn.hwndOwner          = hwnd ;
          ofn.hInstance          = NULL ;
          ofn.lpstrFilter        = szFilter ;   //设置文件过滤信息
          ofn.lpstrCustomFilter  = NULL ;
          ofn.nMaxCustFilter     = 0 ;
          ofn.nFilterIndex       = 0 ;
          ofn.lpstrFile          = NULL ;           // 设置存放文件路径缓冲区
          ofn.nMaxFile           = MAX_PATH ;     //缓冲区大小;
          ofn.lpstrFileTitle     = NULL ;           // 设置存放文件名称缓冲区
          ofn.nMaxFileTitle      = MAX_PATH ;      //缓冲区大小;
          ofn.lpstrInitialDir    = NULL ;
          ofn.lpstrTitle         = "请选择工作目录" ;
          ofn.Flags   =                        =OFN_HIDEREADONLY | OFN_CREATEPROMPT;
          ofn.nFileOffset        = 0 ;
          ofn.nFileExtension     = 0 ;
          ofn.lpstrDefExt        = TEXT ("txt") ;    // ofn.lCustData          = 0L ;
          ofn.lpfnHook           = NULL ;
          ofn.lpTemplateName     = NULL ;
      

  3.   

    http://dev.csdn.net/develop/article/22/22243.shtm
      

  4.   

    char szDir[MAX_PATH];
    BROWSEINFO bi;
    ITEMIDLIST *pidl; bi.hwndOwner = this->m_hWnd;
    bi.pidlRoot = NULL;
    bi.pszDisplayName = szDir;
    bi.lpszTitle = "请选择目录";
    bi.ulFlags = BIF_RETURNONLYFSDIRS;
    bi.lpfn = NULL;
    bi.lParam = 0;
    bi.iImage = 0; pidl = SHBrowseForFolder(&bi);
    if(pidl == NULL)
       return;
    if(!SHGetPathFromIDList(pidl, szDir)) 
    return;
      

  5.   

    http://community.csdn.net/Expert/topic/4236/4236876.xml?temp=.9486658
      

  6.   

    http://blog.csdn.net/jiangsheng/archive/2003/11/20/3796.aspx