Delphi中的窗口子类化技术

本文详细介绍了Delphi中如何使用Superclassing技术将系统标准控件如TButton转化为自定义控件,通过分析TButton的创建过程,揭示了如何在创建窗口时保存并注册标准控件的窗口过程,从而实现对系统控件功能的继承和扩展。
摘要由CSDN通过智能技术生成

(转自http://blog.csdn.net/linzhengqun/archive/2005/11/14/529300.aspx

Windows内部预定义了一些通用的控件,我们在用这些控件的时候不必再调用RegisterClass注册一个窗口类,只要直接调用CreateWindows,并指定一个预定义的窗口类就可以,比如,我们要创建一个Button,只要用如下形式即可:

CreateWindows(.., ‘BUTTON’,...)。

但用Delphi写出来的程序,用SPY看它的某个控件的窗口类名,却是这个控件类的ClassName,比如,一个按钮控件,它的窗口类名是TButton,TButton控件也是封装系统预定义的BUTTON控件,按理它的窗口类名应该是BUTTON才对啊,怎么会变成TButton呢。这个问题长期困扰着我。

昨晚看了一下《Window 95程序设计指南》,其中讲到了Superclassing的技术,可以以系统标准控件为基础,设计新的控件。这个技术使我恍然大悟,赶紧看了一下VCL的代码,果然是用了这样的技术,大喜,以此文记之
我以一个TButton控件的创建过程,说明Superclassing技术在Delphi控件创建的应用。

TButton创建窗口是在CreateWnd方法开始,下面是创建的一个大概流程:

TButton.Cr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值