在Delphi中,我们放置一个按钮,然后双击,就可以在代码编辑器中编写事件响应代码了,很是觉得方便。
可你知道这些OnClick、OnDblClick、OnClose是怎么来的吗?你可能会说是继承来的,对,就是继承来的。可是,继承那么多事件,为什么只处理几个我们需要响应的事件,而其他的不用理会呢?实际上,很简单,这些事件过程都是定义在父类中的空过程,也就是说,这些过程中只有begin、end,而其中间什么代码也没有。用户从父类继承来这些过程后,自定义的事件响应过程会覆盖父类的空过程,而没有定义的,则继续留空,它会继续什么也不作为。
这种空过程被称为“钩子“,等需要的时候,用户的代码就可以挂到它上面。windows API中见到的Hook什么函数,就是钩子函数。