zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    iOS 检测版本更新(02)
    iOS开发之检查更新
    Core Location :⽤用于地理定位
    TCP与UDP区别
    iOS设计模式之观察者模式
    联系人案例
    ksoap调用webservice
    Android获取内置sdcard跟外置sdcard路径
    百度sdk定位不成功,关闭定位
    PinnedHeaderListView实现删除
  • 原文地址:https://www.cnblogs.com/lit10050528/p/3720544.html
Copyright © 2011-2022 走看看