关于delphi的消息机制 ,(200分) (200分)

  • 主题发起人 主题发起人 zj1978
  • 开始时间 开始时间
Z

zj1978

Unregistered / Unconfirmed
GUEST, unregistred user!
&nbsp; &nbsp;比如我在form上放一个tbutton,那么假如我在这个button上面移动鼠标,该button就可以收到WM_Mousemove<br>&nbsp; 我的问题是<br>&nbsp; &nbsp;这个消息从那里来,他在系统中的流动路径是什么?<br>&nbsp; &nbsp;这个WM_Mousemove是直接从系统发给button,还是通过application,或者这个form中转过来的.?<br>&nbsp; &nbsp;系统如何做到判断鼠标是在该button上移动的,而不是在被他遮住的form上面,是怎么判断的?<br>
 
button是个window,windows处理window一级的message dispatch,最后message到了<br>wndproc,tbutton的wndproc处理。这是大概,实际还有点不同,delphi有利用dynamic<br>方法重新dispatch了一把message。在具体的我也记不起来了,看看delphi VCL source<br>吧
 
JJams_King 说得对,在Windows程序开始时,每一个window都会把自己注册<br>到系统,程序运行时所有的消息由系统dispatch<br><br>关于这方面的内容我写过一篇帖子,分析了VCL中相关的源码<br><br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=584889
 
多人接受答案了。
 
后退
顶部