"button" CLICK事件产生的消息 ( 积分: 100 )

  • 主题发起人 主题发起人 ykjt
  • 开始时间 开始时间
Y

ykjt

Unregistered / Unconfirmed
GUEST, unregistred user!
1。为何button的消息处理机制 只响应WM_LBUTTONUP?
2。button产生的消息如何传至父窗口中的?为何要父窗口处理?
 
2.消息是windows产生的,windows将消息派发到顶层窗口,然后由顶层窗口向下分发到button,而不是button传到窗口

1.button可以响应所有主窗口分发的消息,但,它没有必要都去处理.
 
顶层窗口是主窗口还是button所在的窗口?谢谢
从何处能看出消息是由顶层窗口派发的?
 
请高手帮忙:
比如我的程序主窗口是A,为实现某一功能,它又调用了窗口B,当单击窗口B中的按钮button时,消息传递是如何进行的?谢谢
 
建议看看李维的“Inside VCL”,也可以翻翻以前的老贴子,有很多这方面的内容。
一个button的click消息传递大致如下(转帖):
Project1
TApplication.Run
TApplication.HandleMessage
StdWndProc(524948,514,0,852016)
TWinControl.MainWndProc((514, 0, 852016, 0, 0, 0, 48, 13, 0, 0))
TButtonControl.WndProc((514, 0, 852016, 0, 0, 0, 48, 13, 0, 0))
TWinControl.WndProc((514, 0, 852016, 0, 0, 0, 48, 13, 0, 0))
TControl.WndProc((514, 0, 852016, 0, 0, 0, 48, 13, 0, 0))
TControl.WMLButtonUp((514, 0, 48, 13, (48, 13), 0))
TWinControl.DefaultHandler((no value))
StdWndProc(918056,273,660,524948)
TWinControl.MainWndProc((273, 660, 524948, 0, 660, 0, 660, 8, 0, 0))
TCustomForm.WndProc((273, 660, 524948, 0, 660, 0, 660, 8, 0, 0))
TWinControl.WndProc((273, 660, 524948, 0, 660, 0, 660, 8, 0, 0))
TControl.WndProc((273, 660, 524948, 0, 660, 0, 660, 8, 0, 0))
TCustomForm.WMCommand((273, 660, 0, 524948, 0))
TWinControl.WMCommand((273, 660, 0, 524948, 0))
DoControlMsg(524948,(no value))
TControl.Perform(48401,660,524948)
TButtonControl.WndProc((48401, 660, 524948, 0, 660, 0, 660, 8, 0, 0))
TWinControl.WndProc((48401, 660, 524948, 0, 660, 0, 660, 8, 0, 0))
TControl.WndProc((48401, 660, 524948, 0, 660, 0, 660, 8, 0, 0))
TButton.CNCommand((48401, 660, 0, 524948, 0))
TButton.Click
TControl.Click
TForm1.Button1Click($9637C0)
 
你可以换一种思路来想,把子类和父类事件分开处理,父类是公用的
 
后退
顶部