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根據滑鼠的位置擷取目前點選項!