使用三态树实现多目录选择

王朝vc·作者佚名  2006-01-17
窄屏简体版  字體: |||超大  

使用三态树实现多目录选择

作者:郭欣阳

下载示例源代码

参考:徐景周的三态树的实现

在选择目录时,可以使用系统提供的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、编译,运行,便可以得到一个多目录选择的对话框了。

具体的实现可以参考工程代码。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航