TApplication类型的OnMessage事件
TApplication类型的OnMessage事件
消息处理的技术,可以通过使用TApplication的OnMessage事件来处理消息。我们可以指将一个过程指向OnMessage,当应用程序从消息队列中取出一条消息,关准备处理该消息时就会调用该过程。应用程序在Windows处理这条消息前,调用这个事件处理过程。
Application.OnMessage事件处理过程是TMessageEvent类型,并且定义该过程时,需要带一个参数列表。如:
procedure SomeObject.AppMessageHandler(var Msg:TMsg;var Handled:Boolean); begin //doSth; end;
// 可以从组件选项板中选择 TApplicationEvents[AppEvnts] 组件,// 从而创建一个OnMessage事件处理过程。 begin var NumMessage : Integer; //对所有消息函数的过滤 procedure TForm1.ApplicationEvents1Message(var Msg : TMsg;var Handled : Boolean); begin inc(NumMessage); Handled = false; end; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnMessage := ApplicationEvents1Message; end; end.
//自定义过程函数 begin procedure TForm1.FormCreate(Sender: TObject); begin Application.OnMessage := WinMsg; end; Procedure Tform1.WinMsg (Var Msg : TMsg; Var Handled : Boolean); Begin //对WM_SYSCOMMAND该消息处理 If Msg.Message = WM_SYSCOMMAND Then If Msg.WParam = ItemID1 Then begin ShowMessage('My menu!'); Exit; end; End; end.