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。

  • 相关阅读:
    Java Singleton 单例模式
    android 让真机显示 DeBug Log调试信息
    android 图片处理经验分享
    android GridView 的使用 实现多项选择
    Spark/Storm/Flink
    Https
    Netty
    Netty
    java 线程状态相关测试
    Socket buffer 调优相关
  • 原文地址:https://www.cnblogs.com/lit10050528/p/3720544.html
Copyright © 2011-2022 走看看