MFC图书馆参考
CWnd :: OnLButtonDown
void CMyCla::OnLButtonDown(UINT nFlags, CPoint point)
{
CWnd::OnLButtonDown(nFlags, point);
}
void CMyTreeCla::OnLButtonDown(UINT nFlags, CPoint point)
{
CTreeCtrl::OnLButtonDown(nFlags, point);
}
我知道遗产。
class CTreeCtrl : public CWnd
{
......
}
当我想调用OnLButtonDown()时,是否有明确的规则要遵循?
谢谢。
答案 0 :(得分:1)
如果您希望首先调用父类实现,那么您调用父类的OnLButtonDown()然后添加您的实现。
答案 1 :(得分:1)
我认为这就是你想要的。
在类标题中,您需要声明消息映射,并编写函数头。
Class myCWnd : public CWnd
{
DECLARE_MESSAGE_MAP() //note, no semi colon
afx_msg void OnLButtonDown( UINT nFlags, CPoint pt );
};
在cpp文件中:
BEGIN_MESSAGE_MAP(myCWnd, CWnd)
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
void myCWnd::OnLButtonDown( UINT nFlags, CPoint pt )
{
//do what you want here
CWnd::OnLButtonDown(nFlags, pt); //call base class method
}
答案 2 :(得分:1)
通常,您在实现中执行要对事件执行的操作,然后调用父类的实现。 This codeguru post在本教程的第2步中展示了一个很好的示例。但这取决于你想要对OnLButtonDown事件做些什么,所以在你的情况下它可能是另一种方式。
我假设你的例子中的继承如下:
class CMyCla : public CWnd
{
}
class CMyTreeCla : public CTreeCtrl
{
......
}
事实上,正如您所做的那样,您可以在OnLButtonDown中执行操作,然后调用父实现:
void CMyCla::OnLButtonDown(UINT nFlags, CPoint point)
{
// Your stuff here
// blah
// end your stuff
CWnd::OnLButtonDown(nFlags, point);
}
void CMyTreeCla::OnLButtonDown(UINT nFlags, CPoint point)
{
// Your stuff here
// blah
// end your stuff
CTreeCtrl::OnLButtonDown(nFlags, point);
}