支持数据项查找功能的树控制(CTreeCtrl)类

2016-01-29 12:07 18 1 收藏

支持数据项查找功能的树控制(CTreeCtrl)类,支持数据项查找功能的树控制(CTreeCtrl)类

【 tulaoshi.com - C语言心得技巧 】

支持数据项查找功能的树控制(CTreeCtrl)类
作者:许超

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

下载本文示例源代码

代码运行效果图如下:


一、树控制(CTree Control)
树控制用于显示具有一定层次结构的数据项。很多应用程序都使用该控件,例如资源管理器中的磁盘目录等。
树控制中有根数据项(root item),根数据项下包含各个子数据项(child item)。根数据项是所有子数据项的父亲,而这些子数据项是根数据项的孩子。所有子数据项互为兄妹(sibling)关系。每个数据项包括数据项名称(文本字符串)和用于表示该数据项的图像,每个数据项下还可以包含子项,整个结构就象一棵树。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

二、使用树控制
在MFC中,树控制被封装成CTreeCtrl类。下面我们谈谈树控制的创建、属性和操作方法。
(1) 树控制的创建
树控制一般用于对话框程序。创建树控制有两种方法,一种是静态创建,一种是动态创建。静态创建是指拖放控件后声明与之相关的成员变量来操作树控制。在对话框程序界面上拖放一个CTreeCtrl控件,然后通过ClassWizard添加一个CTreeCtrl类型的成员变量并在程序中使用它。动态创建是指在程序中使用Create函数创建树控制对象。本文例子采用静态创建的方法。
(2) 树控制的属性
树控制有很多属性操作函数。使用这些函数可以得到树控制的各种属性信息。例如:取得树控制中项数GetCount、取得树控制中项相对于父项的偏移值GetIndent、取得树控制图像列表控制句柄GetImageList等。具体信息可以查看MSDN帮助。
(3) 数控制的操作
树控制的操作方法包括插入一个树项InsertItem、删除一个树项DeleteItem、删除
所有树项DeleteAllItems、展开或合拢树项的子项Expand、选中特定树项
SelectItem、选择一个树项作为第一个可视树项SelectSetFirstVisible、编辑一个可
视的树项EditLabel和排序给定父树项的子树项SortChildren等。

三、让树控制支持数据项查找功能
在有些场合下用户需要在树控制中添加新的数据项。新添加的数据项可能和已有的某数据项名称重复。为避免这种情况,我们需要一个函数它能够在添加新数据项之前先检查所有的数据项,如果查到包含新添加数据项名称的数据项已存在,可以向用户提示该信息。使用递归方法来实现该函数相对简单。
下面是该函数的原型、参数及代码。

/***************************************************************** 名称:FindItem** 功能:在树控制中根据数据项名称查找数据项** 参数:item    - 要查询的数据项及其子数据项**       strText - 要查询的数据项名称** 返回值:NULL  - 没找到*      *        (非空的HTREEITEM ) - 找到****************************************************************/HTREEITEM CTreeCtrlEx::FindItem(HTREEITEM item, CString strText){HTREEITEM hFind;if(item == NULL)return NULL;while(item!=NULL){if(GetItemText(item) == strText)return item;if(ItemHasChildren(item)){item = GetChildItem(item);hFind = FindItem(item,strText);if(hFind){return hFind;}else{item= GetNextSiblingItem(GetParentItem(item));}}else{item = GetNextSiblingItem(item);if(item==NULL)return NULL;}}return item;}
四、示例程序
我们创建一个对话框程序。
(1) 通过“FILE-NEW-PROJECTS-MFC AppWizard(EXE)”建立名为MyTreeCtr的
工程,在建立过程中选择基于对话框(Dialog based)的应用;
(2) 将对话框中的默认按钮控件“确定”删除,并将所有对话框属性中的Language域设置为Chinese(P.R.C.),以使应用程序支持中文;在对话框窗口中添加树控制对象(TREE CONTROL),并设置一个按钮“新建数据项”,其对应标识分别如下:

来源:http://www.tulaoshi.com/n/20160129/1484679.html

延伸阅读
wps怎么查找重复项   1、首先我们打开wps表格,然后点击数据==重复项===高亮重复项==设置 2、大家可以看到我们的WPS表格中,第九、十行的内容分别和第六、八行重复了。如何批量将表格中重复内容删去呢? 3、选中要查找重复项的表格范围点击菜单栏数据点击格式栏重复项==删除重复项 4、点击重复项在下拉列表中...
标签: PHP
  <?php /** * *  作者: 徐祖宁 (唠叨) *  邮箱: czjsz_ah@stats.gov.cn *  开发: 2002.07 * * *  类: outbuffer *  功能: 封装部分输出控制函数,控制输出对象。 * *  方法: *  run($proc)          &...
关闭查找我的iPhone功能   查找我的iPhone是非常实用的一款手机应用软件,能够在地图上定位你iPhone的位置,还能远程发送消息、远程锁定或者远程擦除iPhone里面的资料信息,还能够远程发送声音到iPhone上面,在家里或者办公(图老师整理)室如果是忘了把iPhone放在哪里了,让iPhone播放声音这有利于帮忙找回iPhone,如果丢了iPhone即使...
Excel怎么查找重复项 不同版本的Excel操作方式略有不同,但大同小异,下面以Excel2007为例。 1.打开需要编辑的Excel表格。观察表格发现有部分数据相同,需要将这些重复的数据用醒目的颜色标注出。首先,选中需要查找重复值的一列或某个区域。 2.鼠标单击开始菜单,依次选择样式-条件格式-突出显示单元格规则-重复值。 3.弹出重复值对话框,...
本课主题: 实验七 查找 教学目的: 练习顺序查找、折半查找及二叉排序树的实现 教学重点: 教学难点: 授课内容: 顺序查找 折半查找 顺序查找及折半查找示例 二叉排序树 示例

经验教程

392

收藏

70
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部