使用三态树实现多目录选择
http://tech.ddvip.com 2006年07月20日 社区交流
本文详细介绍使用三态树实现多目录选择

参考:徐景周的三态树的实现
在选择目录时,可以使用系统提供的Shell函数SHBrowseForFolder,这个函数功能比 较强大,在一般情况下使用它基本上能够满足要求,但是,这个函数也有一个缺陷, 就是不能选择多个目录,每次只能返回一个选择的目录。可是在实际的工作中,需要 一次返回多个选择的目录。我一开始琢磨着用CFileDialog来实现,可是后来发现无 法实现我要的功能。于是乎就采取了一种比较“笨”的办法,用三态树实现多目录选 择。参考了徐景洲的三态树的实现和其他一些关于CTreeCtrl控件显示目录的代码后, 就动手写了这个工程。原本不敢拿出来献丑,可以发现很多网友问多选目录的问题,而 又没有比较好的解决方案,于是就拿出来献献丑了。
以下就为将CFolderTreeCtrl类添加到工程中的步骤:
1、生成一个新的对话框工程;
2、将FolderTreeCtrl.h,FolderTreeCtrl.cpp文件添加到工程中;
3、将STATEBMP.BMP,folderbmp.bmp文件添加到工程资源中,并设定资源ID。这里
设置如下folderbmp.bmp -> IDB_BITMAP_LIST
STATEBMP.BMP -> IDB_BITMAP_STATE;
4、定义CTreeCtrl控件为我们的类型CFolderTreeCtrl m_tree;
5、在对话框类中添加代码:
BOOL CMultiFolderDlg::OnInitDialog()
{
CDialog::OnInitDialog();
......
m_imgState.Create(IDB_BITMAP_STATE,13, 1, RGB(255,255,255));
m_imgList.Create(IDB_BITMAP_LIST,16, 1, RGB(255,255,255));
m_tree.SetImageList(&m_imgList,TVSIL_NORMAL);
m_tree.SetImageList(&m_imgState,TVSIL_STATE);
m_tree.DisplayTree(NULL,FALSE);
return TRUE;
}6、编译,运行,便可以得到一个多目录选择的对话框了。
具体的实现可以参考工程代码。
作者:郭欣阳 责编:豆豆技术应用
正在加载评论...
- VC/VC++按钮设计专题
- VC/VC++ 菜单专题
- VC/VC++ 工具条专题
- VC/VC++ 对话框教程
- VC/VC++ 报表教程
- VC/VC++ 控件
- VC/VC++ GDI
- Visual Studio 2008
- VC/VC++ MFC教程
- VC/VC++ QQ
- VC/VC++ Socket编程
- VC/VC++ 钩子编程
- TangramMini组件应用教程
- VC/VC++ 窗体
- VC/VC++ ADO 教程
- Windows CE 教程
- VC/VC++ DLL(动态链接库)编程
- VC/VC++ PDFlib
- VC与MATLAB编程
- VC/VC++ DirectShow 教程
- VC++入门视频教程
- VC/VC++ COM组件设计与应用
- VC/VC++ ATL
- VC/VC++ WTL
- VC/VC++ 定制调试诊断工具和程序
- VC/VC++ 进程
- VC/VC++ Win32
- VC/VC++ WMI
- VC/VC++ 消息
- 更多VC/VC++专题……