VCl源码求教(40分)

  • 主题发起人 主题发起人 superbabys
  • 开始时间 开始时间
S

superbabys

Unregistered / Unconfirmed
GUEST, unregistred user!
在D5的TWincontrol类 的 WMKeyDown 函数就一句
“if not DoKeyDown(Message) then inherited”
可小弟我就是搞不懂当DoKeyDown(Message)返回false时,该执行什么,按inherted的帮助
上说,如果不跟标识,应该调用祖先类的同名函数,可我找遍其所有祖先类都找不到
WMKeyDown,请诸位大侠指点一二。分是少了一些,但这已经使我的全部家当了
 
其实意思是说dokeydown返回false,就什么也不做,因为已经处理完毕了。
inherited应该是调用windows的处理,源码是看不到的
 
To Daiqingbo
那跟返回True有何区别?这个函数就只有这一条语句。我主要想知道如果把OnKeydown的
变量Key赋值为0(dokeydown就会返回False),会执行什么东东。
 
是这样的,DoKeyDown本身就进行了一系列的处理,其返回的值是向调用者表达是不是已
经完成了应该进行的处理工作。
WMKeyDown的这一句 if not DoKeyDown(Message) then inherited
就是说,如果 DoKeyDown 没有完成任务,就由前辈的处理例程来处理吧;如果已经完成了呢,
就什么也不做了(省略了Else部分)
另外,WMKeyDown是消息处理函数,Delphi 已将其与Windows的消息处理机制容为一体,
inherited表示,如果祖先有该消息处理函数就调用之,否则就转到Windows的缺省函数来处理。

希望你能够明白了!
 
多人接受答案了。
 
后退
顶部