应用场景:
一个对话框(CAddItemDlg类)中有一个树形控件(CTreeCtrl),为该树形控件绑定一个控件名m_MultSelTree。
CMultSelTree m_MultSelTree;//其中CMultSelTree类是一个CTreeCtrl派生类。该类实现按住Ctrl键,和Shitf键多选树中的结点。
发现void CAddItemDlg::OnSelchangedTreeBrowse(NMHDR* pNMHDR, LRESULT* pResult)只能响应一次,后面就没有响应了?
思路:向对话框发送WM_NOTIFY,就可以再次进入CAddItemDlg::OnSelchangedTreeBrowse(NMHDR* pNMHDR, LRESULT* pResult)
void CMultSelTree::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
HTREEITEM hItem = HitTest(point,&nFlags);
NMTREEVIEW tv;
memset((void*)&tv,0,sizeof(tv));
tv.hdr.hwndFrom = m_hWnd;
tv.hdr.idFrom = IDC_TREE_BROWSE/*::GetClassLong(m_hWnd,GWL_ID)*/;
tv.hdr.code = TVN_SELCHANGED;
tv.action = TVN_SELCHANGED;
tv.itemNew.hItem = hItem;
::SendMessage(GetParent()->m_hWnd,WM_NOTIFY,(WPARAM)tv.hdr.hwndFrom,(LPARAM)&tv);
CTreeCtrl::OnLButtonUp(nFlags, point);
}
注:如果在OnSelchangedTreeBrowse(NMHDR* pNMHDR, LRESULT* pResult)函数中用到pNMHDR,请给这个赋值tv.itemNew.hItem = hItem