CTreeCtrl 父结点联动子结点CheckBox

来源:互联网 发布:淘宝申请签约海外买手 编辑:程序博客网 时间:2024/04/30 08:47

项目需要用到树形控件的多选功能,在google上试了前几个的方法,发现都是一样的,没效果,终于找到一个可以实现的代码

效果图:


代码:

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 = 0;}// 设置子节点是否被选中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);    //获取兄弟的句柄    }}

原文地址:http://www.cnblogs.com/lit10050528/p/3720544.html

0 0