Delphi Application.Run语句

来源:互联网 发布:数控编程切削量设置 编辑:程序博客网 时间:2024/05/16 08:03
Application.Run,它的作用是启动消息循环,然后调Application.ProcessMessage,该函数会在应用程序的消息队列中查找一条消息。当在消息队列中检索到一条消息后,触发Application.OnMessage事件。这样在Windows本身对消息处理之前,就会响应OnMessage事件的处理过程,它优于任何消息处理,而且只接收登记的消息,即前面所述的由PostMessage发送的消息。响应Application.OnMessage事件的处理过程必须是TmessageEvent类型,其声明如下: type TMessageEvent = procedure (var Msg: TMsg; var Handled: Boolean) of object; 其中TMsg是Windows中定义的消息记录,我们可以这样声明: Procedure OnMyMessage(var Msg:TMsg;var Handled:Boolean); 然后把此方法赋给Application.OnMessage事件: Application.OnMessage :=OnMyMessage; OnMessage事件将捕获发送给应用程序的所有消息,这是一个非常繁忙的事件,因此在处理OnMessage事件的处理过程中设置断点进行消息处理是不明智的。 VCL对象用于接收消息的方法叫MainWndProc。它是定义在Twincontrol类中的静态方法,不能被重载。它不直接处理消息,当消息离开MainWndProc后,消息被传递给对象的WndProc方法,WndProc方法是在Tcontrol类中定义的一个虚拟方法,由它调用Dispatch方法。Dispatch根据传入的Message来寻找相应的处理方法,如果最后找不到,就继续向上到父类中寻找消息处理方法,一直到找到为止,如果找不到则调用Defaulthandler。 Defaulthandler方法对消息进行最后的处理,然后把消息传递给Windows的DefWindowProc函数或其他默认的窗口过程。
原创粉丝点击