1、定义树结构的窗口ID
/*#define FiletreeID 101*/
const int FiletreeID =101;
2、在映射函数中添加消息映射
ON_NOTIFY(NM_CLICK, FiletreeID, OnNMClickTree)
3、在头文件中声明函数
afx_msg void OnNMClickTree(NMHDR* pNMHDR,LRESULT* pRsult);
4、函数具体实现
void CFileView::OnNMClickTree( NMHDR* /*pNMHDR*/,LRESULT* pRsult )
{
DWORD dwPos = ::GetMessagePos();
CPoint point( LOWORD(dwPos), HIWORD(dwPos));
m_wndFileView.ScreenToClient(&point);
UINT uFlags=0;
HTREEITEM hItem=m_wndFileView.HitTest(point,&uFlags);
/*HTREEITEM hItem =m_wndFileView.GetSelectedItem()*/
/* m_wndFileView.SelectItem(hItem);*/ //添加上这个代码后多选功能失效
}
注意:NM_CLICK点击消息结束之后才能更新hItem的选择,表现为点击事件的滞后性,所以要通过HitTest根据鼠标的位置获取当前点击项!