hur.cn - 华软网

 热门搜索

关于MFC消息响应的一个问题

  作者:未知    来源:网络    更新时间:2011/9/29
C++">
void CXXView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值


CView::OnLButtonDown(nFlags, point);
}



请教一下,为什么大多数的消息处理函数会默认调用基类的同名函数比如此处的 CView::OnLButtonDown(nFlags, point)?
---华软 网友回答---
比如说你在地上捡到一个钱包,这时候触发一个事件,在这个事件中,你有选择:一是自己处理这个钱包,那么后果自己负责;二是你什么也不做,就当没看见,那么这个事情就不了了之了;三是你捡起钱包,交给警察大爷,后面你就不管了。
第一种选择,相当于你把基类的调用函数删除掉,然后自己编写处理代码,那么好坏就在于你自己的代码质量了;第二种选择,相当于你删除了基类的调用函数,却没有写任何代码;第三种选择,相当于你不增加自己的代码,只有基类的调用函数,那么成于不成由基类的处理来决定。
临时起意,随便举例。
---华软网友回复---
如果不写任何代码的话,则调用父类的消息处理函数。
即使自己处理了,也有可能需要调用父类版本--如果父类的处理函数需要被调用以维护自身状态。
---华软网友回复---
有一定机制的;可以找一本MFC内核方面的书看看。
---华软网友回复---
一般情况下基类的函数会做一些通用性的处理
我们在写自己的代码后在调用一些基类的东西比较靠谱

---华软网友回复---
学习!
---华软网友回复---
基类中的函数已经做了简单处理,拿来使用,减少代码量
---华软网友回复---
这是类继承的缘故
---华软网友回复---
引用 1 楼 happyparrot 的回复:
比如说你在地上捡到一个钱包,这时候触发一个事件,在这个事件中,你有选择:一是自己处理这个钱包,那么后果自己负责;二是你什么也不做,就当没看见,那么这个事情就不了了之了;三是你捡起钱包,交给警察大爷,后面你就不管了。
第一种选择,相当于你把基类的调用函数删除掉,然后自己编写处理代码,那么好坏就在于你自己的代码质量了;第二种选择,相当于你删除了基类的调用函数,却没有写任何代码;第三种选择,相当于你……

引用 4 楼 sky101010ws 的回复:
一般情况下基类的函数会做一些通用性的处理
我们在写自己的代码后在调用一些基类的东西比较靠谱


这两位楼上说的差不多了。。。

刚开不要过分钻细节。。。
能运行就行,慢慢你就懂了。 
---华软网友回复---
想使用基类的功能那你就调用基类的处理函数,不想使用基类的功能可以不调用基类的函数,这不就是继承啊呵呵。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。