Permanent Link: http://wutiam.net/2009/05/msg-response-for-dynamic-created-ctreectrl-instance/
由于程序里的 CTreeCtrl 控件实例是通过 CTreeCtr::Create() 来创建的,无法通过 VS 的 Properties 面板里的 Control Events 工具来生成消息映射函数,但控件又需要响应鼠标点击事件,这时最简单的办法就是重载 CTreeCtr 实例的 owner 的 OnNotify() 成员虚函数(这个 owner 也必然是 CWnd 的子类):
protected: virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | BOOL CTreePane::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { NMHDR* pNMHDR = (NMHDR*)lParam; ASSERT(pNMHDR != NULL); switch (pNMHDR->code) { case TVN_SELCHANGED: _OnTreeCtrlSelChanged(wParam, lParam, pResult); break; default: break; } return CWnd::OnNotify(wParam, lParam, pResult); } |

No Comments / Trackbacks / Pingbacks
Leave a Reply