天天看點

動态加載的 CTreeCtrl 消息響應

自己程式裡的 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;
}
           

繼續閱讀