CTreeCtrl 父结点联动子结点CheckBox
实现很简单,直接上代码:
void CCheckBoxTreeDlg::OnNMClickTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
CPoint point;
UINT uFlag;
HTREEITEM hTree;
BOOL bCheck;
GetCursorPos(&point);
m_treeTest.ScreenToClient(&point);
hTree = m_treeTest.HitTest(point, &uFlag); if(hTree && (TVHT_ONITEMSTATEICON & uFlag))
{
bCheck = m_treeTest.GetCheck(hTree);
SetChildCheck(hTree, !bCheck);
} *pResult = ;
}
// 设置子节点是否被选中
void CCheckBoxTreeDlg::SetChildCheck(HTREEITEM hRoot, BOOL bCheck)
{
hRoot = m_treeTest.GetChildItem(hRoot); //获取子项句柄
while (NULL != hRoot)
{
m_treeTest.SetCheck(hRoot, bCheck);
SetChildCheck(hRoot,bCheck); //递归调用
hRoot = m_treeTest.GetNextSiblingItem(hRoot); //获取兄弟的句柄
}
}
实现思路很简单,就是在CTreeCtrl控件的点击事件处理函数中判断点击是否是checkbox控件,如果是则级联修改点击项和子节点的checkbox选中状态。
其中最关键的是第10行和12行,用来判断点击的是不是checkbox。
CTreeCtrl 父结点联动子结点CheckBox的更多相关文章
- 同步TreeView中父结点和子结点的状态[以及Treeview的bug]
此代码仅仅是二级结点,即父结点下面只有一层子结点,只有两层结构 /// <summary> /// 某个结点的CheckBox被选中 /// </summary> /// &l ...
- vue+element ui项目总结点(四)零散细节概念巩固如vue父组件调用子组件的方法、拷贝数据、数组置空问题 等
vue config下面的index.js配置host: '0.0.0.0',共享ip (假设你的电脑启动了这个服务我电脑一样可以启动)-------------------------------- ...
- JavaScript--DOM访问子结点childNodes
访问子结点childNodes 访问选定元素节点下的所有子节点的列表,返回的值可以看作是一个数组,他具有length属性. 语法: elementNode.childNodes 注意: 如果选定的节点 ...
- 不要在遍历子结点时修改parent
[不要在遍历子结点时修改parent] 在用for/foreach遍历子结点时,如果在这过程中有改变子结点的parent,会导致不可预料的结果.我所遇到的问题是,在此种情况下,并非所有的子结点都能遍历 ...
- vue父组件获取子组件页面的数组 以城市三级联动为例
父组件调用子组件 <Cselect ref="registerAddress"></Cselect> import Cselect from '../../ ...
- Morris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)——无非是在传统遍历过程中修改叶子结点加入后继结点信息(传统是stack记录),然后再删除恢复
先看看线索二叉树 n个结点的二叉链表中含有n+1(2n-(n-1)=n+1)个空指针域.利用二叉链表中的空指针域,存放指向结点在某种遍历次序下的前驱和后继结点的指针(这种附加的指针称为"线索 ...
- Devexpress TreeList选择父级联动
Treelist当显示复选框后,父级和子级的复选框没有关联,使用过程中很不便,如图所示 自己给treelist添加父子级联动 /// <summary> /// 初始化TreeList,父 ...
- Web网页树形列表中实现选中父节点则子节点全选和不选中父则子全不选
需要实现的功能:选中父节点对应子节点全选:不选中父节点,对应子节点也不选中 如下图所示,选中车队,对应车队中车辆也全部选中,以实现车队中所有车辆在地图上的显示. 选中cqupt ...
- js input复选框选中父级同时子级也选中
js实现复选框选中父级元素子级元素也选中,没有子级元素选中父级也不选中的效果 HTML <tr> <td> <label> <input name=" ...
随机推荐
- PHP 循环
PHP 中的循环语句用于执行相同的代码块指定的次数. 循环 在您编写代码时,您经常需要让相同的代码块运行很多次.您可以在代码中使用循环语句来完成这个任务. 在 PHP 中,我们可以使用下列循环语句: ...
- 基于vue 的 UI框架 -- Mint UI
网址: http://mint-ui.github.io/docs/#!/zh-cn 官网: http://mint-ui.github.io/#!/zh-cn vue2.0实例: http://bl ...
- oracle 批量更新之update case when then
oracle 批量更新之update case when then CreationTime--2018年8月7日15点51分 Author:Marydon 1.情景描述 根据表中同一字段不同情况 ...
- html 链接外部css js文件
<link rel="stylesheet" type="text/css" href/style.css" /> <scri ...
- nodejs实现拉钩网爬虫
概述 通过nodejs+mysql+cheerio+request实现拉钩网特定公司的所有招聘信息的抓取,并将抓取的信息保存到数据库中.抓取内容包括:薪酬福利,工作地,职位要求,工作性质等几乎所有的内 ...
- Linux安装Nginx1.7.4、php5.5.15和配置
Nginx是一个轻量级的高性能Webserver.反向代理server.邮件(IMAP/POP3/SMTP)server,是Igor Sysoev为俄罗斯訪问量第二的Rambler.ru网站开发,第一 ...
- python函数中把列表(list)当参数时的"入坑"与"出坑"
在Python函数中,传递的参数如果默认有一个为 列表(list),那么就要注意了,此处有坑!! 入坑 def f(x,li=[]): for i in range(x): li.append(i*i ...
- DataTime? 的 GetValueOrDefault() 方法
DataTime? 转换为 DataTime类型 就可以调用 ToString() 自定义格式 @item.CreateDate.GetValueOrDefault().ToString(" ...
- webdriver API study
This chapter cover all the interfaces of Selenium WebDriver. Recommended Import Style The API defini ...
- Chrome英文版离线安装包下载
在原来在线安装地址后面加上 ?standalone=1 即可 https://www.google.com/intl/en/chrome/browser/desktop/index.html?st ...