天天看點

樹結構滑鼠消息響應事件

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

繼續閱讀