天天看点

树结构鼠标消息响应事件

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根据鼠标的位置获取当前点击项!

继续阅读