VC++中实现选择文件夹的功能
本文适合初学者阅读 作者:郭郭 来源:原创 日期: 2008/01/29 浏览:
VC中提供了CFileDialog类来选择文件,如果想实现选择文件夹的功能,就不是那么简单了。下面的函数,可以实现选择文件夹的功能。并且可以指定文件夹和对话框的名称。
折叠 C/C++ Code
- //by guoguo www.vclover.com
- BOOL FolderDlg::OpenDir(CString& strPath,char * strRootFolder,LPCTSTR cDlgName)
- {
- char path[MAX_PATH];
- BROWSEINFO bi;
- if(strRootFolder==NULL)
- bi.pidlRoot=NULL;
- else
- {
- LPITEMIDLIST pIdl = NULL;
- IShellFolder* pDesktopFolder;
- char szPath[MAX_PATH];
- OLECHAR olePath[MAX_PATH];
- ULONG chEaten;
- ULONG dwAttributes;
- strcpy(szPath, (LPCTSTR)strRootFolder);
- if(SUCCEEDED(SHGetDesktopFolder(&pDesktopFolder)))
- {
- MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szPath, -1, olePath, MAX_PATH);
- pDesktopFolder->ParseDisplayName(NULL, NULL, olePath, &chEaten, &pIdl, &dwAttributes);
- pDesktopFolder->Release();
- }
- bi.pidlRoot=pIdl;
- }
- bi.hwndOwner=GetSafeHwnd();
- bi.pszDisplayName=path;
- bi.lpszTitle=cDlgName;
- bi.ulFlags=0;
- bi.lpfn=NULL;
- bi.lParam=NULL;
- bi.iImage=NULL;
- path[0]='\0';
- if(SHGetPathFromIDList(SHBrowseForFolder(&bi),path))
- {
- strPath.Format("%s",path);
- return true;
- }
- else
- return false;
- }
上一篇:没有了 下一篇:为CFileDialog类指定一个默认的文件夹
相关文章
查看全部评论相关评论
What's New?
What's Hot?
Google Adsense!