最近对消息的传递很是疑惑,请教高手~
最近对消息的传递很是疑惑,
做了个试验,截获wm_keydown消息
分别在下面4个地方跟踪消息,
1,application.OnMessage中
2,窗体的wndproc方法中(在inherited之前)
3.memo控件的onkeydown事件
4.memo的父控件tmyPanel控件的wndproc方法(在inherited之前)
tmyPanel只是简单的继承tpanel,重载它的wndproc方法而已
在memo中进行录入字符,
首先,4个地方都跟踪到了消息,
但4者执行顺序是1-4-2-3,
可见自application分发消息后,消息经过了memo控件的wndproc,又依次经过了memo控件的父窗口。
这个向上传递的规则是windows自有的吗?还是vcl处理的?所有的windows消息都会向上传递吗?
另外,在父窗口传递过程中(上例的2,4中),本来是wm_keydown($100)的消息,变成了$B02E这又是根据什么规则来变的呢?