MFC樹控制元件父Item與子Item的checkbox的聯動
阿新 • • 發佈:2019-02-19
首先為樹控制元件新增NM_CLICK訊息,然後在訊息響應函式加上下面程式碼即可
void CDlgFitleFile::OnClickTreeFiletype(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here CPoint pt; UINT uFlag; BOOL bCheck; HTREEITEM hSelectedItem; HTREEITEM hChildrenItem; HTREEITEM hNextItem; uFlag = 0; pt = ::GetMessagePos(); m_treeFileType.ScreenToClient(&pt); hSelectedItem = m_treeFileType.HitTest(pt, &uFlag); if (uFlag & TVHT_ONITEMSTATEICON) { m_treeFileType.SelectItem(hSelectedItem); bCheck = m_treeFileType.GetCheck(hSelectedItem); if (m_treeFileType.ItemHasChildren(hSelectedItem)) { hChildrenItem = m_treeFileType.GetChildItem(hSelectedItem); while (hChildrenItem != NULL) { if (!bCheck) m_treeFileType.SetCheck(hChildrenItem, TRUE); else m_treeFileType.SetCheck(hChildrenItem, FALSE); hNextItem = m_treeFileType.GetNextItem(hChildrenItem, TVGN_NEXT); hChildrenItem = hNextItem; } } } *pResult = 0; }