当前位置:VC爱好者用户界面编程Files and Folders(文件与目录) → 正文
VC++中实现选择文件夹的功能
本文适合初学者阅读  作者:郭郭    来源:原创    日期: 2008/01/29    浏览:

VC中提供了CFileDialog类来选择文件,如果想实现选择文件夹的功能,就不是那么简单了。下面的函数,可以实现选择文件夹的功能。并且可以指定文件夹和对话框的名称。

折叠 C/C++ Code
  1. //by guoguo www.vclover.com   
  2. BOOL FolderDlg::OpenDir(CString& strPath,char * strRootFolder,LPCTSTR cDlgName)   
  3. {   
  4. char   path[MAX_PATH];      
  5. BROWSEINFO    bi;      
  6. if(strRootFolder==NULL)      
  7.    bi.pidlRoot=NULL;      
  8. else  
  9. {      
  10.          LPITEMIDLIST     pIdl    =    NULL;      
  11.          IShellFolder*    pDesktopFolder;      
  12.          char             szPath[MAX_PATH];      
  13.          OLECHAR          olePath[MAX_PATH];      
  14.          ULONG            chEaten;      
  15.          ULONG            dwAttributes;      
  16.          strcpy(szPath, (LPCTSTR)strRootFolder);      
  17.          if(SUCCEEDED(SHGetDesktopFolder(&pDesktopFolder)))      
  18.          {      
  19.     MultiByteToWideChar(CP_ACP,    MB_PRECOMPOSED,    szPath,    -1,    olePath,    MAX_PATH);      
  20.     pDesktopFolder->ParseDisplayName(NULL,    NULL,    olePath,    &chEaten,    &pIdl,    &dwAttributes);      
  21.     pDesktopFolder->Release();      
  22.          }      
  23.          bi.pidlRoot=pIdl;      
  24. }    
  25. bi.hwndOwner=GetSafeHwnd();        
  26. bi.pszDisplayName=path;      
  27. bi.lpszTitle=cDlgName;      
  28. bi.ulFlags=0;      
  29. bi.lpfn=NULL;      
  30. bi.lParam=NULL;      
  31. bi.iImage=NULL;      
  32. path[0]='\0';      
  33. if(SHGetPathFromIDList(SHBrowseForFolder(&bi),path))   
  34. {   
  35.    strPath.Format("%s",path);   
  36.    return true;   
  37. }   
  38. else  
  39.     return false;   
  40. }  

 

上一篇:没有了   下一篇:为CFileDialog类指定一个默认的文件夹
相关文章
查看全部评论相关评论
评论内容:
昵称: 验证码:验证码
What's New?
What's Hot?
Google Adsense!