帮我解释一个过程 procedure WMDestroy(var message: TMessage); message WM_DESTROY; ( 积分: 2

  • 主题发起人 主题发起人 liurui525
  • 开始时间 开始时间
L

liurui525

Unregistered / Unconfirmed
GUEST, unregistred user!
帮我解释一个过程 procedure WMDestroy(var message: TMessage)
message WM_DESTROY
( 积分: 25 )
<br />过程中的参数最后会返回一个什么,
在什么情况下要用(var message: TMessage)
最后 message WM_DESTROY 是什么意思,在什么情况下要用!
对这方面的东东确实不太了解,还请各位多多指点!
 
刚学Delphi.有错勿怪.

这是个自定义的处理消息的过程声明?
message WM_DESTROY 是个自定义的消息,自己都不知道什么时候用,别人就更不知道了.
主要看你在什么条件下发布的消息
而procedure WMDestroy这个过程应该就是对这个message WM_DESTROY 进行处理的
例如:你按下button1时发布消息WM_DESTROY,而在
procedure WMDestroy(var message: TMessage)
中写对消息WM_DESTROY的处理.
先判断message.msg的内容是不是WM_DESTROY,然后......
 
WM_DESTROY是Windows中,窗体销毁的消息。每当用户点击窗体上的关闭按钮后,Windows会将这个消息通过该窗体的Handle发送给该窗体。当你接到这个消息的时候,就需要执行一系列释放操作(比如,打开的文件,分配的内存等)。

procedure WMDestroy(var Message: TMessage)
message WM_DESTROY;

这个声明表示,有一个带Message参数的名叫WMDestroy的函数,需要映射到消息函数Map中(message WM_DESTROY就是这个意思)。当Windows发送WM_DESTROY消息给对应的窗体的时候,VCL会通过消息函数Map中找到这个WMDestroy函数的入口,并直接调用它(你不用关心谁调用它,你只要写好处理代码就行了)。

由于所有Windows Message的结构都是固定的,所以VCL声明了一个映射这个结构的record,就是上面看到的TMessage。

整个解释大致如此。更详细的说明和意义,楼主可以参考一下基础书籍。
 
我自己的理解
WM_DESTROY 是个定义好的常数,这个声明的意思是:当接受到编号为WM_DESTROY的消息时,调用这个过程WMDestroy,其参数是TMessage类型,
WINDOWS系统是消息驱动的,就是每发生一件操作产生一个相对应的消息,根据消息编号查找相应的处理过程
 
VCL 里封装windows消息机制 ,建议看看李维的VCL那本书!结合源码就可以一清二楚!
 
基本上是明白了,授受答案了,谢谢!
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部