自己程式裡的 CTreeCtrl 控件是通過 CTreeCtr的成員函數Create() 來建立的,無法通過 VS 中圖形化的界面在 Properties 面闆裡的 Control Events 工具來自動生成消息映射函數,但控件又需要響應滑鼠點選事件,這時最簡單的辦法就是重載 CTreeCtrl類中的虛函數 OnNotify() 。
先從CTreeCtrl類派生出CMyTreeCtrl類然後在MyTreeCtrl.h頭檔案中加:
protected:
virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
在MyTreeCtrl.cpp源檔案中加:
BOOL CMyTreeCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
BOOL bRes = CTreeCtrl::OnNotify(wParam, lParam, pResult);
NMHDR* pNMHDR = (NMHDR*)lParam;
ASSERT(pNMHDR != NULL);
if (pNMHDR && pNMHDR->code == TTN_SHOW && GetToolTips() != NULL)
{
GetToolTips()->SetWindowPos(&wndTop, -1, -1, -1, -1, SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOSIZE);
}
return bRes;
}