|
盒子资源分类 |
![]() |
|
|
|
我写的一个超小型的对象库 v0.2 |
![]() |
关键字:TinyAVL ActiveX 超小型 对象库 |
来 自:原创 |
平 台:Win2k/XP/NT,Win2003 |
下载所需:0 火柴 |
深浅度:高级 |
完成时间:2007/12/4 |
发布者:takashiki |
发布时间:2007/12/4 |
编辑器:DELPHI7 |
语 种:简体中文 |
分 类:杂项 |
下载浏览:1678/11921 |
|
|
|
|
闲来没事,自己写来玩玩的。
本库特别对ActiveX进行了精简,我的Demo程序中含有两个ActiveX控件,一个是WebBrowser,并且Sink了它的OnTitleChange事件。另一个则简单了,只是放了一个Flash控件。编译环境是Delphi7,采用了KOL的单元替换,使用了UPX压缩,最终程序大小是12.5K。 ========== 如果您的程序已经超过了30K,那么请不要使用本库。那时,您需要使用的应该是KOL!
========== 经过了那么长时间的休养生息了,我的TinyAVL终于有发布新版本了,版本代号暂定为0.2,哈哈。与前一版本相比,差别还是十分大的。本版本不再对System单元进行最小化处理了,麻烦,我直接使用了KOL的单元替换了,本单元替换使得OleVariant和Variant无法使用。我同时也提供了一个替代方案。
本库以最小化为目标,但是也没有做到所有的函数都采用汇编书写,有的地方也是直接抄袭了Inprise和KOL。主要是AcitveX的事件处理,直接派生自TObject,从而使得代码量猛增。本Demo程序事实上含有三个程序,分别采用两个编译开关编译。详见TinyAVL.dpr单元。
本库以最小化为目标,不仅仅是程序体积,同时也体现在内存占用上面。虽然现在这两项指标已经不值一哂了,但是,小总是比较好的。因此本人也保留了。这里我卖个关子,真的是非高手莫看啊!因为与VCL、KOL的时间处理都不一样,大概类似于MFC或WTL的宏的方式了,比较复杂了吧?但是库本身可以提供相当简单的接口和处理过程,同时也使得ActiveX控件的事件可以通用。大家随便拖个VCL或KOL的TWebBrowser,再看看大小,然后比较一下我的12.5K的Demo程序,这下你总该明白了些什么吧。
所有控件的事件处理均为 XXControl.OnXXEvent := AssignEvent(YYY)的方式,类里面事件的定义均不占用任何内存。而是直接采用如下方式定义的: property OnClick: TMethod index WM_LBUTTONUP read GetEvents write SetEvents; 嘿嘿,是不是太奇怪了?
AVL.pas中使用了基本的控件以及消息处理,对Form的处理比较奇怪,直接盗用了微软的对话框,没有测试到底有没有节省体积。 AxCtrls.pas则封装了ActiveX控件,采用的方式是直接应用ATL.dll。哈哈,这就是我的ActiveX为什么那么小的原因!这里一共有好多个控件呢,连HTML的元素的事件都已经Sink了,至于怎么用,高手一看就明白。 |
![]() |
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们! |
相关文章 |
|
![]() |
|
相关评论 |
![]() |
共有评论5条
当前显示最后5条评论
|
zxyzxy123 |
2007/12/4 21:06:55 |
支持,顶一下:) |
zhahongyi |
2007/12/4 23:14:42 |
高手哦!俺抬头仰望。这东西实在看不懂...... |
ccdos |
2007/12/5 13:23:21 |
真正的高手
只能仰望了 |
ruralboy |
2007/12/11 2:16:29 |
汇编能手,顶一下表示支持!
这东西做起来不容易,不过有些极端.个人认为 exe 文件长度无所谓.严谨和人性化的程序才是最好的:)
粗陋之见,不足挂齿!
PS:
不解事件为何定义为 Object,去掉 of object 代码不是更自由. |
sun_catboy |
2009/3/23 15:52:04 |
定义Object是有原因的,不是随便改的,这个涉及到了Delphi的编译器的问题 |
我要发表评论 |
查看全部评论 |
|
|
|