項目需要用到樹形控件的多選功能,在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