MFC樹控件父Item與子Item的checkbox的聯動

首先爲樹控件添加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;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章