Delphi TMessage[3] TApplicationEvents.OnMessage

Delphi TMessage[3] TApplicationEvents.OnMessage

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

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

TMessageEvent包括以下参数:

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

示例:

1
2
3
4
5
6
7
8
9
// 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   滔Roy  阅读(278)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报

导航

点击右上角即可分享
微信分享提示