有谁知道Delphi中"窗口"的创建过程?(200分)

  • 主题发起人 主题发起人 WuWZY
  • 开始时间 开始时间
再等几天吧!
 
补充一点:
其他的控件比如 TEdit 等都是 TWinControl 的子孙,构造的顺序都差不多,
关键的一点是:

对 TWinControl.Handle 属性的第一次访问会触发对窗口句柄的真正创建。

即:Handle->GetHandle->HandleNeeded

关于这一点,可以察看 Delphi Help->HandleAllocated 方法的注解。

上文只是剖析了 TForm 的构造过程,其它类似控件可能有所差别,其它控件并不
一定是在构造 TControlCanvas 时才第一次访问 TWinControl.Handle 的,也许
是在其他地方,不过没有必要都写出来。
Good luck!
From: BaKuBaKu
 
windows使用createWidnow,createWidnowEx函数进行所有窗口的创建工作.
delphi的CreateParams类似与此,只是一个外壳而已.
每个窗口(指所有大大小小的窗口)都有一个窗口过程winproc,窗口的消息在此
过程中进行处理.当然,消息是链式传递的,windows内建一个缺省的窗口过程,即:
defWidnowProc,程序中某些消息的处理不使用缺省过程,而是自己处理.
c语言中有个winmain函数,这是程序的入口点,
delphi中即程序文件中program中的begin...end过程.
去吧.
 
能在详细一点码!
 
To WuWZY:
Sorry, no more detail for you.
I think you will master it soon, if you can only try it by
yourself carefully follow my guide.
Just try it!
From: BaKuBaKu
 
多人接受答案了。
 
后退
顶部