WndProc漏写override会发生什么情况?
试图改写TForm1(注意,不是TForm类)的WndProc函数,从而达到某些目的。程序如下:
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs; type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
procedure WndProc(var message:TMessage); override; // 如果漏写override,TForm1的WndProc函数将不起作用。原因是,TObject努力把消息发到TForm1里来,试图调用TForm1的虚函数WndProc,结果在它的虚函数列表中没有找到此函数(因为名称被占用,因此VMT列表里不再有它),于是就回到TForm1的上级,即TForm,找到了后者的WndProc,执行,当然没有任何特殊的自定义动作。
// 还有另一种可能,即VMT和普通函数里都有一个叫做WndProc的函数。但是VMT里的那个函数没有被改写,因此不执行任何动作。偏偏TObject是发消息给它的。
end; var
Form1: TForm1; implementation {$R *.dfm}
procedure TForm1.WndProc(var message:TMessage);
begin
if message.msg =WM_LBUTTONDOWN then ShowMessage('ddd')
else inherited WndProc(Message);
end; end.
WndProc漏写override会发生什么情况?的更多相关文章
- JAVA中继承时方法的重载(overload)与重写/覆写(override)
JAVA继承时方法的重载(overload)与重写/覆写(override) 重载-Override 函数的方法参数个数或类型不一致,称为方法的重载. 从含义上说,只要求参数的个数或参数的类型不一致就 ...
- Error-MVCr:找到了多个与 URL 匹配的控制器类型。如果多个控制器上的特性路由与请求的 URL 匹配,则可能会发生这种情况。
ylbtech-Error-MVCr:找到了多个与 URL 匹配的控制器类型.如果多个控制器上的特性路由与请求的 URL 匹配,则可能会发生这种情况. 1.返回顶部 1. 找到了多个与 URL 匹配的 ...
- 找到多个与名为“xxx”的控制器匹配的类型。如果为此请求(“{controller}/{action}/{id}”)提供服务的路由没有指定命名空间以搜索与此请求相匹配的控制器,则会发生这种情况。
一次在建MVC 项目的进行开发的时候,因为后来想到了一个更好的项目名称,就把 Web项目的名称重命名 改了, 然后 程序集名称,默认命名空间,都改成新的了,刚建立的项目本身也不大,运行起来,总是报 & ...
- HihoCoder1649 : 漏写的数字([Offer收割]编程练习赛38)(模拟题)
描述 小A今年刚上幼儿园,正在学习写100以内的数字.幼儿园的老师留了一项作业,要求小A从某个100以内的数X开始一直写到另一个100以内的数Y(Y - X > 1). 不过粗心的小A在作业中漏 ...
- 万答#13,MySQL自增键用完后,插入数据会发生什么情况
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 MySQL自增键用完了,插入数据会发生什么情况 1.实验场景 GreatSQL ...
- 内网穿透+VS2015自带IIS express实现本地调试(微信等需要将开发环境暴漏到外网的情况使用)
今天一个兼职结束了,又要开始寻找新的兼职公司了 ,为了贴补家用啊,为了给儿子更好的生活加油! 抒情完毕进入正题,本篇文章要解决的问题是其实在开发微信支付,微信公众号等回调地址必须是外网可访问的80端口 ...
- 两台计算机有相同的IP地址会发生什么情况?两台计算机有相同的MAC地址会发生什么情况?
1 相同IP a) 同一网段内 会发生IP地址冲突.两台主机在特定情况下是可以同时使用同一个IP地址的.但是如果这两台主机在同一个网络内,大多数情况下,二者或者其中之一的连通性将会被破坏.比方 ...
- 使用filter导致服务器返回的页面始终是空白---在doFilter中漏写了chain.doFilter()
今天调代码的时候,突然发现,服务器开着,什么都没有问题,当我把下面这个filter给deploy了以后,访问所有的页面就都是空白. 后来发现,是因为在代码路径中,有一条路径没有调用filterChai ...
- Swift-重写(Override)
子类可以为继承来的实例方法(instance method),类方法(class method),实例属性(instance property),或附属脚本(subscript)提供自己定制的实现(i ...
随机推荐
- angular 中的$event 对象包含了浏览器原生的event对象
ou can pass the $event object as an argument when calling the function. The $event object contains t ...
- 通过脚本发送zabbix微信报警
实现zabbix通过微信报警的方式也是通过脚本来实现,与邮件报警不同的是,脚本调用的微信的相关接口的获取相对复杂一点 1.申请一个微信公众号(企业号) 申请方法不多说,如果已申请请忽略 2.在微信企业 ...
- ECSHOP后台开发模块步骤
一.建数据库二.添加到后台导航栏并配置相关语言包三.权限配置四.添加增删查改五.增加其他功能(复制,搜索(暂时调不出来页面),排序,转移,AJAX) 以添加支付信息模块为例 第一步首先我们用phpmy ...
- 搭建elsticsearch集群 报错with the same id but is a different node instance解决办法
搭建elsticsearch集群 报错with the same id but is a different node instance解决办法 学习了:https://blog.csdn.net/q ...
- ant 报 make sure you have it in your classpath
检查build.xml的配置 build.xml配置出错,导致的这个问题
- 王立平--scard0与scard1分别指的是什么?以及路径获取
一般是: scard0:指系统内部存储 scard1:指外插的sd卡 也有特例.. 分别获取路径的方法: package com.main; import java.lang.reflect.Meth ...
- vue相关知识点
1.el-date-picker输入的时间范围需要两点 A.禁用键盘输入 :editable=false,否则虽然禁用,但是输入框还能输入 B.指定时间范围::picker-options=" ...
- hadoop:WordCount问题总结
今天玩了一下hadoop的MapReduce,中途遇到了几个问题,在此记录一下. 1.一切按照配置完成之后,hadoop namenode format,start-all.sh启动,使用jps查看进 ...
- zabbix监控sockets连接数
配置zabbix客户端配置文件 vim /etc/zabbix/zabbix_agentd.conf 添加 Include=/etc/zabbix/zabbix_agentd.d/ 添加脚本对soc ...
- 利用CFAbsoluteTimeGetCurrent()计算时间差
开发中,遇到计算时间差的问题,利用CFAbsoluteTimeGetCurrent()可以很方便的进行计算 实例: 场景:类似购物车中修改商品数量的功能,如下图所示,要求,修改完的数量,要同步到服务器 ...