inherited在消息中的作用

好奇一下。看来Object Pascal确实与Windows深入结合了。


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

const
UM_Test = WM_USER + 100;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure MyMessage(var Msg: TMessage); message UM_Test;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Perform(UM_Test, 0, 0);
end;

procedure TForm1.MyMessage(var Msg: TMessage);
begin
inherited;
ShowMessage(‘Hello‘);
end;

end.

在message处理中和其他不一样的是inherited不会因为没有在祖先中找到一样的函数或者方法而将inherited失效,他会传入缺省的消息处理.
这里调用TFORM1的祖先的消息处理,由于tform和tcustomform没有这个实现,所以直接调用的是tcustomform的defaulthandle.(注意这个方法是对twincontrol的override)。

但是,如果本类重载了DefaultHandler函数,就会直接调用本类的DefaultHandler函数:


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

const
UM_Test = WM_USER + 100;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure MyMessage(var Msg: TMessage); message UM_Test;
procedure DefaultHandler(var Message); override;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Perform(UM_Test, 0, 0);
end;

procedure TForm1.DefaultHandler(var Message);
begin
with TMessage(Message) do
begin
if Msg = UM_Test then ShowMessage(‘DefaultHandler‘);
end;
inherited;
end;

procedure TForm1.MyMessage(var Msg: TMessage);
begin
inherited;
ShowMessage(‘Hello‘);
end;

end.

顺便再看看这样改写的效果:


procedure TForm1.DefaultHandler(var Message);
begin
with TMessage(Message) do
begin
if Msg = UM_Test then ShowMessage(‘DefaultHandler‘);
if Msg = WM_SETTEXT then ShowMessage(‘WM_SETTEXT‘);
end;
inherited;
end;

inherited在消息中的作用,码迷,mamicode.com

时间: 2024-10-11 17:05:10

inherited在消息中的作用的相关文章

java中static作用详解

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被类的所有实例共享. 只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们.因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象. 用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类

微信学习总结 08 文本消息中使用网页超链接

1 文本消息中使用网页超链接 网页超链接的作用以及如何在文本消息中使用网页超链接 2. 具体实现 刘峰博主的博文已经分析的很清楚了,直接去看就行了 .http://blog.csdn.net/lyq8479/article/details/9157455 3 补充 视频请求消息 Video.java /** * 视频 */ public class Video { // 媒体文件id private String MediaId; // 缩略图的媒体id private String Thumb

SET STATISTICS IO和SET STATISTICS TIME 在SQL Server查询性能优化中的作用

原文:SET STATISTICS IO和SET STATISTICS TIME 在SQL Server查询性能优化中的作用 近段时间以来,一直在探究SQL Server查询性能的问题,当然也漫无目的的查找了很多资料,也从网上的大神们的文章中学到了很多,在这里,向各位大神致敬.正是受大神们无私奉献精神的影响,所以小弟也作为回报,分享一下关于SET STATISTICS IO和SET STATISTICS TIME这两条T_SQL命令,在查询优化性能中的作用. 首先我想说明一下这篇文章不是关于如何

SIEM在PCI DSS和安全等级保护合规性中的作用

研究表明,数据泄露与不合规之间存在直接关联.这并不是说合规公司的数据永远不会遭到破坏,而是强调事件检测和响应的重要性.企业已经开始意识到数据泄露的破坏性后果 - 他们的财务和声誉受到威胁,因此许多人在过去几年中采取措施来遵守PCI DSS和安全等级保护规则.主要目标通常是强调实现持续合规. 考虑到这一点,主动安全监控控制变得比以往任何时候都更加重要.日志管理是IT安全专家多年来所强调的,SIEM解决方案已经存在了很长时间 - 在大规模网络***变得普遍之前. 信息系统安全等级测评是验证信息系统是

SLAM+语音机器人DIY系列:(二)ROS入门——8.理解roslaunch在大型项目中的作用

摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人"miiboo"中的大部分程序也采用ROS进行开发,所以本文就重点对ROS基础知识进行详细的讲解,给不熟悉ROS的朋友起到一个抛砖引玉的作用.本章节主要内容: 1.ROS是什么 2.ROS系统整体架构 3.在ubuntu16.04中安装ROS kinetic 4.如何编写ROS的第一个程序hello_world 5.编写简单的消息发布器和订阅器 6.编写简单的s

从使命召唤手游国际版将于暑假公测 谈论代理IP在游戏中的作用

本文关键词:代理IP,手机代理IP软件 从使命召唤手游国际版将于暑假公测 谈论代理IP在游戏中的作用 使命召唤手游官方3月18日发布了最新爆料,正式宣布<使命召唤>国际版将于今年暑假进行公测! 目前游戏官网已开启了预注册.根据官网此次的消息,基本可以大胆预测如果国内版号顺利,<使命召唤>国服也将很快与大家见面了! 此次<使命召唤>国际版的预注册现已在部分地区开放,比如北美,南美,欧洲和其他地区,包含 Android 和 iOS . 保留系列经典模式 并将推出额外模式 &

Orchard 之:Widget,兼看 Layer 在权限控制中的作用

一:Widget 可以理解为控件,可以直接被页面所引用.行为类似与分部页面,比如,我们可以创建一个 商品列表 Widget,然后这个 Widget 就可以被很多页面所引用. 理解 Widget 这个概念,我们不得不理解另外两个概念: 1:Layer Orchard 默认有这么几个层,Default.Authenticated.Anonymous.Disabled.TheHomepage.Layer 用于承载什么时候 Widget 将会被展现,这么讲大家一定觉得很抽象,其实 Layer 存在的意义

论Node在构建超媒体API中的作用

论Node在构建超媒体API中的作用 作者:chszs,转载需注明. 博客主页:http://blog.csdn.net/chszs 超媒体即Hypermedia,是一种採用非线性网状结构对块状多媒体信息(包含文本.图像.视频等)进行组织和管理的技术.超媒体的概念类似于早期的超文本.超文本的本质是在文本内容加上链接.这样就构成了超文本.超媒体也类似. 不管是超媒体还是超文本.使用的传输协议都是HTTP,这意味着超媒体能够被全部的浏览器所接受. 而描写叙述超媒体的类型我们使用MIME. MIME即

浅析POI在广告投放中的作用

POI(Point of Interest)在广告中的作用主要是通过分析用户地理位置信息提供个性化的服务. 1.POI位置信息的采集方式 a.通过多基站定位: 实现方式之一:首先通过信号传播时差计算出一个基站到一个终端的距离,然后以基站为核心,距离为半径画出一个圆形:然后,采用同样的方式选择另外两个基站 三个圆交汇重叠的地方即为终端的位置. b.区域信号指纹匹配的: 实现方式:首先建立信号特征指纹数据库(位置信息-(电平信号sigS1,sigS2,sigS3,....sigSn)),划分栅格,通