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 }