经过近2个月的Coding,终于完工了。
该库您可以免费使用,如果用作商业用途,请来Email告知我justthisone@hotmail.com
DyCOMHelper,可以让您在模块里创建对象,并使用,很多VB下不能直接实现的函数,指针访问,还有多。将陆续贴出。
本贴主要展示如何用它创建对象,如何实现继承。
在这个库的实现过程中,付出最多的是对IDispatch.Invoke的实现。
本示例旨在向您展示如何在VB6下实现真正的继承,如何使用DyCOMHelper创建类,并使用,它将带您进入VB6背后的COM世界,看看我们的类是如何运行的。
DyCOMHelper创建的对象的特点:
1、可以像VB6下定义的对象一样去使用,虽然不是VB6机制创建,但是可以被VB6当作对象来识别使用。
2、支持后期绑定,支持错误处理,支持多接口等常规应用。
3、支持真正意义上的继承,本示例将说明这一点。
4、所创建的对象是轻量对象,实例占用的起步空间更小,约VB类的1/5。
5、函数调用速度高出20% 左右
6、实例创建的速度,最大可以提高近10倍
7、释放速度,最大可以提高近100倍。(以上速度来自于极限测试数据)
8、创建模式比VB6更丰富,VB6的类实例,是在堆上进行创建的,效率很低,DyComHelper可以选择堆、堆栈是进行创建,也可从某个结构上创建,也可以用内置的定长管理器进行创建。
9、从类实例外部,访问内部数据时,支持真正意义的指针式访问。
10、使用DyCOMHelper创建类,将让您的系统支持成千上万个类,而不会担心效率问题。
读这个示例您可能会问的问题:
1、类型库,怎么来的?目前是我使用工具手动创建。未来,我将推出VB6插件,在VB6下直接书写代码生成类型库并自动引用。
使用前,请先执行下列顺序:
1、引用 Types目录下 DyCOMHelperType.tlb,TestInheritLib.tlb。
2、按F8开始逐步断点执行,看看它是如何工作的。
目录下 的 DyCallerLib.dll DyCOMHelperLib.dll是不需要注册的。其中 DyCOMHelperLib.dll 是标准Dll。
示例中,有三个类,Animal、Wolf、Demiwolf,分别是动物、狼、狼狗,狼狗继承自狼,狼继承自动物,动物派生自IDispatch。
下载地址为:
http://share.j2ksys.com/TestInherit.rar
-------------------俺是羞涩且低调的分割线-----------------------
由于疏忽,之前的示例,有一个库没有Include进来,向参与测试的人说声抱歉。
让我慨叹的是,这个帖子,有很多人顶了,也有很多人批评了,鼓励和批评的人中,真正拿代码Run的人,却极少极少。
感谢老马提供的空间存放DEMO,示例下载地址:
http://www.m5home.com/blog/article.asp?id=531
版权声明:
您可以在您自己的代码中免费使用该框架,如果用作商业用途,请联系作者:
QQ:63298118
MSN:justthisone@hotmail.com
注意事项:
1、如果您下载过之前的示例,请运行文件夹下的 类型库注册注销.exe,将之前的两个类型库文件进行注销。否则新版的类型库将无法引用。切记切记。
2、如果您是第一次接触该示例。请打开工程后,引用Types目录下的两个Tlb文件。
3、DyCallerLib.dll和DyCOMHelperLib.Dll是标准DLL。不需要引用。
关于DyCOMHelper:
DyCOMHelper 提供一系列的功能,遵循一些使用原则,让您可以用VB6创建运行更快的应用程序。
比如:创建轻量对象、指针访问、代码注册注销ActiveX、Tlb类型库、不引用一个Dll使用其中的对象等。
这次,仅仅说明其创建轻量对象方面的特点
DyCOMHelper创建的对象的特点:
1、类写在Moudle(.bas)中 ,而不是Class Moudle(.cls)中
2、类型定义在TypeLib中。
3、可以像VB6下定义的对象一样去使用,虽然不是VB6机制创建,但是可以被VB6当作对象来识别使用。
4、支持后期绑定IDispatch,支持错误处理,支持多接口等常规应用。
5、支持真正意义上的继承,本示例将说明这一点。
6、所创建的对象是轻量对象,实例占用的起步空间更小,约VB类的1/5(后者为96字节起步空间)
7、函数调用速度最大高出一倍左右
8、实例创建的速度,最大可以提高近5-10倍
9、释放速度,最大可以提高近100倍。(以上速度来自于极限测试数据)
10、创建模式比VB6更丰富,VB6的类实例,是在堆上进行创建的,效率很低,DyComHelper可以选择堆、堆栈是进行创建,也可以从某个结构上创建,也可以用内置的定长管理器 行创建。
11、从类实例外部,访问内部数据时,支持真正意义的指针式访问。
10、使用DyCOMHelper创建类,将让您的系统支持成千上万个类,而不会担心效率问题。
读这个示例您可能会问的问题:
1、类型库,怎么来的?目前是我使用工具手动创建。未来,我将推出VB6插件,在VB6下直接书写代码生成类型库并自动引用。
示例中,有三个类,Animal、Wolf、Demiwolf,分别是动物、狼、狼狗,狼狗继承自狼,狼继承自动物,动物派生自IDispatch。