Delphi TMessage[3] TApplicationEvents.OnMessage

Delphi TMessage[3] TApplicationEvents.OnMessage

当应用程序收到Windows消息时发生。

property OnMessage: TMessageEvent;
  • 使用OnMessage捕获发布到应用程序中所有窗口的任何或所有Windows消息。当应用程序收到Windows消息时发生OnMessage。OnMessage只接收发布到消息队列的消息,而不接收通过Windows API SendMessage函数直接发送的消息。
  • OnMessage事件处理程序允许应用程序响应TApplication事件中声明的消息以外的消息。如果应用程序没有针对传入消息的特定处理程序,则消息将被调度到其预期的窗口,而Windows将处理该消息。
  • 警告:每秒有数千条消息通过此事件。编写处理程序时要小心,因为它会影响整个应用程序的性能。
  • 提示:从OnMessage事件处理程序调用CancelDispatch方法,以防止应用程序将事件转发给任何其他应用程序事件对象。
type TMessageEvent = procedure (var Msg: TMsg; var Handled: Boolean) of object;

TMessageEvent包括以下参数:

  • Msg //触发事件的Windows消息。
  • Handled  //指示事件处理程序是否响应消息。如果事件处理程序将Handled设置为true,则应用程序将假定消息已完全处理,并停止对消息的任何后续处理。

示例:

  // DBGrid1实现鼠标的上下滚动
  if (DBGrid1.Focused) And (Msg.message = WM_MOUSEWHEEL) then
  begin
    if Msg.wParam > 0 then
        SendMessage(DBGrid1.Handle, WM_KEYDOWN, VK_UP, 0)
    else
        SendMessage(DBGrid1.Handle, WM_KEYDOWN, VK_DOWN, 0);
    Handled :=true;{Handled默认False, True表示之后的事件将不会执行,例如,WM_MOUSEWHEEL事件}
  end;

  

 

 

 

 

创建时间:2022.05.26  更新时间:

posted on 2022-05-26 16:14  滔Roy  阅读(240)  评论(0编辑  收藏  举报

导航