CTreeCtrl 父結點聯動子結點CheckBox

項目需要用到樹形控件的多選功能,在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
發佈了23 篇原創文章 · 獲贊 9 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章