首页 > 代码库 > CTreeCtrl 父结点联动子结点CheckBox
CTreeCtrl 父结点联动子结点CheckBox
实现很简单,直接上代码:
1 void CCheckBoxTreeDlg::OnNMClickTree1(NMHDR *pNMHDR, LRESULT *pResult) 2 { 3 // TODO: 在此添加控件通知处理程序代码 4 CPoint point; 5 UINT uFlag; 6 HTREEITEM hTree; 7 BOOL bCheck; 8 GetCursorPos(&point); 9 m_treeTest.ScreenToClient(&point); 10 hTree = m_treeTest.HitTest(point, &uFlag); 11 12 if(hTree && (TVHT_ONITEMSTATEICON & uFlag)) 13 { 14 bCheck = m_treeTest.GetCheck(hTree); 15 SetChildCheck(hTree, !bCheck); 16 } 17 18 *pResult = 0; 19 } 20 // 设置子节点是否被选中 21 void CCheckBoxTreeDlg::SetChildCheck(HTREEITEM hRoot, BOOL bCheck) 22 { 23 hRoot = m_treeTest.GetChildItem(hRoot); //获取子项句柄 24 while (NULL != hRoot) 25 { 26 m_treeTest.SetCheck(hRoot, bCheck); 27 SetChildCheck(hRoot,bCheck); //递归调用 28 hRoot = m_treeTest.GetNextSiblingItem(hRoot); //获取兄弟的句柄 29 } 30 }
实现思路很简单,就是在CTreeCtrl控件的点击事件处理函数中判断点击是否是checkbox控件,如果是则级联修改点击项和子节点的checkbox选中状态。
其中最关键的是第10行和12行,用来判断点击的是不是checkbox。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。