我用的是 D7。问题 1:
(图显示不全的话,请点击 http://hi.csdn.net/attachment/201102/17/7389483_12979299219wE7.jpg)
上面的“图5-6”里的那么多信息是怎么弄出来的??我设置断点,然后点击Button时,我的 “Call Stack”窗口里怎么只有 一两行信息??
Call Stack 是需要设置么??怎么设置??怎么使用才能看到和图上一样的信息??
问题 2:
上面图中,黑框部分,李维说读者自己思考。我不明白 黑框里“TWinControl.DefaultHandler((no value))”怎么会出现在那个地方??
WM_LBUTTONUP 消息不是已经被“TControl.WMLButtonUp((514,0,124,41,(124,41),0))”处理掉了吗??
如果是FindControl产生的DefaultHandler调用的话,不是应该在“DoControlMsg(66490,(no,value))”之后才发生吗??
(图显示不全的话,请点击 http://hi.csdn.net/attachment/201102/17/7389483_12979299219wE7.jpg)
上面的“图5-6”里的那么多信息是怎么弄出来的??我设置断点,然后点击Button时,我的 “Call Stack”窗口里怎么只有 一两行信息??
Call Stack 是需要设置么??怎么设置??怎么使用才能看到和图上一样的信息??
问题 2:
上面图中,黑框部分,李维说读者自己思考。我不明白 黑框里“TWinControl.DefaultHandler((no value))”怎么会出现在那个地方??
WM_LBUTTONUP 消息不是已经被“TControl.WMLButtonUp((514,0,124,41,(124,41),0))”处理掉了吗??
如果是FindControl产生的DefaultHandler调用的话,不是应该在“DoControlMsg(66490,(no,value))”之后才发生吗??
解决方案 »
- 两天了实在找不到dbgrideh导出excel乱码的原因
- 很多个控件,有一样的操作,该如何实现才能不是一个个控件事件里写相同的代码
- 为什么delphi在win2000下可以调试,在xp下不能调试?
- 以前一直用delphi,现在这间公司用.net,而且还是做所谓的winform程序,十分不爽,郁闷...
- 用windows2000自带的超级终端能正常读取授时卡数据,调用授时卡自带的dll不能可靠的获得数据(具体看下面的内容)
- DBEdit数据输入的问题
- 请问 类 可以作为一个函数的形参吗??
- 学delphi有什么窍门?
- Activex控件注册问题?
- 套接字出错如何解决??
- 离职了,有哪位兄弟推荐下工作。
- 请教各位大侠一个问题,急死人了
InsideVCL
5-3-2 动态消息和VCL事件处理函数的结合
第245页
问题2:call stack,方法的执行顺序是从底部往上看的
问题2:不好意思,没看清你的问题。其实这样的问题,自己去看源代码(循着call stack去找),会更清楚。
如果没处理掉 或者 没找到动态方法,才要 TWinControl.DefaultHandler 的吧??
还是说这里的 TWinControl.DefaultHandler 不是处理 WM_LBUTTONUP ??
就不能只推荐到 Delphi版,不要到 论坛首页 么?????
(TControl.WndProc 应该已经通过 TObject.Dispatch 找到了事件处理函数 TControl.WMLButtonUp ,WM_LBUTTONUP 应该已经被处理掉了啊,没看到哪边代码又调用DefaultHandler啊......???)
在delphi的VCL体系中,DefaultHandler 是消息最后的归宿,如果一个消息溜达一圈没有找到对应的处理函数,则这个消息最终会回到 DefaultHandler 函数中,因此,也隐含着,DefaultHandler 函数是消息处理机制的根,在 TControl.WMLButtonUp 函数中的第一句就是 inherited ,这表示要执行一下TControl 祖先类中的 WM_LBUTTONUP 消息响应函数,又因为 TControl 的祖先类中,没有对应的 WM_LBUTTONUP 消息响应函数,因此在 TControl.WMLButtonUp 函数中的 inherited 就导致了对 DefaultHandler 虚函数的调用,而TWinControl这个类重载了DefaultHandler ,所以,执行流程就到了TWinControl.DefaultHandler