在CTreeCtrl中捕获复选框选中消息,父子节点选中状态联动
2011-12-07 17:02
441 查看
转自:http://apps.hi.baidu.com/share/detail/22849017
void CMyDlg::OnClickTree1(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here NM_TREEVIEW* pHdr = (NM_TREEVIEW*)pNMHDR; *pResult = 0; CPoint point; UINT uFlag; GetCursorPos(&point); ScreenToClient(&point); HTREEITEM item = m_ctrlTree.HitTest(point, &uFlag); if((item) && (TVHT_ONITEMSTATEICON & uFlag)) { BOOL bCheck = m_ctrlTree.GetCheck(item); SetItemCheckState(item, !bCheck);} } /************************************************************************/ /* 根据选择的节点选中状态,设置相关节点的选中状态 */ /************************************************************************/ void CHistoryDlg::SetItemCheckState(HTREEITEM item, BOOL bCheck) { SetChildCheck(item, bCheck); SetParentCheck(item, bCheck); } /************************************************************************/ /* 设置子节点的选中状态 */ /************************************************************************/ void CHistoryDlg::SetChildCheck(HTREEITEM item, BOOL bCheck) { HTREEITEM child = m_ctrlTree.GetChildItem(item); while(child) { m_ctrlTree.SetCheck(child, bCheck); SetChildCheck(child, bCheck); child = m_ctrlTree.GetNextItem(child, TVGN_NEXT); } } /************************************************************************/ /* 设置父节点选中状态 */ /************************************************************************/ void CHistoryDlg::SetParentCheck(HTREEITEM item, BOOL bCheck) { HTREEITEM parent = m_ctrlTree.GetParentItem(item); if(parent == NULL) return; if(bCheck) m_ctrlTree.SetCheck(parent, bCheck); else { HTREEITEM bro = m_ctrlTree.GetNextItem(item, TVGN_NEXT); BOOL bFlag = false; while(bro) { if(m_ctrlTree.GetCheck(bro)) { bFlag = true; break; } bro = m_ctrlTree.GetNextItem(bro, TVGN_NEXT); } if(!bFlag) { bro = m_ctrlTree.GetNextItem(item, TVGN_PREVIOUS); while(bro) { if(m_ctrlTree.GetCheck(bro)) { bFlag = true; break; } bro = m_ctrlTree.GetNextItem(bro, TVGN_PREVIOUS); } } if(!bFlag) m_ctrlTree.SetCheck(parent, false); } SetParentCheck(parent, GetCheck(parent));
相关文章推荐
- 在CTreeCtrl中捕获复选框选中消息,父子节点选中状态联动 .
- 在CTreeCtrl中捕获复选框选中消息,父子节点选中状态联动
- TreeView父子联动效果保持节点状态一致
- TreeView父子联动效果保持节点状态一致
- TreeView父子联动效果保持节点状态一致
- Ext带复选框的Tree实现父子节点联动功能
- javascript-TreeView父子联动效果保持节点状态一致
- vs2005 TreeView 实现父子节点,复选框联动.
- ExtJs Treepanel节点checkbox的半选中状态复选框效果
- C#Winform TreeView节点选择影响其父子节点选中状态(递归)
- javascript-TreeView父子联动效果保持节点状态一致
- TreeView父子联动效果保持节点状态一致
- TreeView父子联动效果保持节点状态一致
- 【zTree】zTree根据后台数据生成树并动态设置前面的节点复选框的选中状态
- ExtJs Treepanel节点checkbox的半选中状态复选框效果
- (转)TreeView父子联动效果保持节点状态一致
- CTreeCtrl(图片和状态图片、动态提示、选中节点颜色、查询)
- TreeView节点选择影响其父子节点选中状态(递归)
- dataGridView空白列,默认选中行的背景色,dataGridView中加入复选框勾选状态的更改
- VS2005 TreeView的checkBox的父子节点级联状态