CFILEDIALOG如何选择文件夹
想实现这样的功能:用CFILEDIALOG如果用户选择了文件,则返回这个文件的路径,如果没选择文件,则返回当前目录的路径.我觉得应该不难实现,但找不到相关的资料,是不是要自己做个派生类? 问题点数:20、回复次数:10Top
1 楼bobob(静思)回复于 2005-08-29 09:20:50 得分 10
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;Top
2 楼vcmute(BCare4 H1Rest Good9!)回复于 2005-08-29 09:27:53 得分 1
http://www.codeproject.com/dialog/XFolderDialog.aspTop
3 楼vcmute(BCare4 H1Rest Good9!)回复于 2005-08-29 09:29:19 得分 1
http://www.codeguru.com/Cpp/W-D/dislog/dialogforselectingfolders/article.php/c1883/
只显示文件夹,关键是用*..*过滤Top
4 楼frland()回复于 2005-08-29 09:42:17 得分 0
不是只获得文件夹,而是根据用户选择与否获得文件夹或者目录.比如说目录你选择了一个文件,就处理这个文件,如果没选择,就处理这个目录下的所有文件Top
5 楼jiangsheng(蒋晟.Net[MVP])回复于 2005-08-29 09:42:38 得分 5
用SHBrowseForFolder+BIF_BROWSEINCLUDEFILES就可以了Top
6 楼frland()回复于 2005-08-29 10:04:32 得分 0
楼上说得不错,但是我想最好可以按CFILEDLG的样子显示.如果实在没有比较简单的方法,我打算自己派生一个CFILEDLG,做好了放出来共享,谁能说一下大概的流程Top
7 楼vcmute(BCare4 H1Rest Good9!)回复于 2005-08-29 10:14:57 得分 1
http://www.codeguru.com/Cpp/W-D/dislog/dialogforselectingfolders/article.php/c1883/
就是从CFileDialog派生出来的: CFileDialog class that only displays foldersTop
8 楼frland()回复于 2005-08-29 10:19:43 得分 0
上面那个只能显示目录,我的要求是同时能显示文件,根据选择返回目录或者文件的路径Top
9 楼laogong165(歪锅配翘盖,好锅头有好锅盖!)回复于 2005-08-29 13:19:49 得分 1
嘎嘎,自己派生吧Top
10 楼vcmute(BCare4 H1Rest Good9!)回复于 2005-08-29 15:10:37 得分 1
只显示文件夹,关键是用*..*过滤
去掉,或改为*.*就可以显示文件了
Top




