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 更新时间:
博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!