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