原创文章,欢迎支持
在VB的使用过程中,较为高级和较为具有兼容性的编程方式是创建类模块。
比如创建了一个数组创建类,专门用来创建特定类型的数组,它被存在一个“ArrayHelper.cls”文件中。代码如下:
Option Explicit
'///////////////////
'@@summary
'@@require
'@@reference
'@@license
'@@author
'@@create
'@@modify
'////////////////////
'-------------------
' 初始化
'-------------------
Private Sub Class_Initialize()
End Sub
'--------------------
' 销毁
'--------------------
Private Sub Class_Terminate()
End Sub
'///////////////////////////
'//
'// 公有方法
'//
'///////////////////////////
Public Function StringArray(ParamArray arr()) As String()
Dim a() As String
Dim i As Integer
ReDim a(UBound(arr))
For i = LBound(arr) To UBound(arr)
If VarType(arr(i)) <> vbString Then
Err.Raise 104, , "[SunSoft]参数非String,请检查代码!"
End If
a(i) = CStr(arr(i))
Next i
StringArray = a
End Function
Public Function IntegerArray(ParamArray arr()) As Integer()
Dim a() As Integer
Dim i As Integer
ReDim a(UBound(arr))
For i = LBound(arr) To UBound(arr)
If VarType(arr(i)) <> vbInteger Then
Err.Raise 104, , "[SunSoft]参数非Integer,请检查代码!"
End If
a(i) = CStr(arr(i))
Next i
IntegerArray = a
End Function
当我需要在其他的地方使用这里的方法的时候,我必须创建一个类,才能使用这个方法。如下:
Dim k() As String
Dim o As New ArrayHelper
k = o.StringArray("1", "2222")
Stop
在Stop命令帮助下,我们在调试模式下验证,k变量的确得到了正确的数组。
但是,由于VB6的机制,我们没法在不创建对象的时候调用这个对象的方法。
今天,创建ActiveX DLL的时候,意外发现了一个方法。
使用ActiveX DLL创建支持静态函数的类
创建工程
创建一个ActiveX DLL工程,工程名为SunSoft
创建类
首先,添加一个类模块(导入cls文件或者编写创建一个新的类模块)
然后,在右侧的属性窗口,按照如下的表格设置类的属性
| 属性名 | 属性值 |
|---|---|
| (名称) | ArrayHelper |
| DataBindingBehavior | 0 - vbNone |
| DataSourceBehavior | 0 - vbNone |
| Instancing | 6 - GlobalMultiUse |
| MTSTransactionMode | 0 - NotAnMTSObject |
| Persistable | 0 - NotPersistable |
编译导出
编译,生成SunSoft.dll
使用方法
新建一个普通exe工程,然后在工程-引用-浏览(B)...中选择Sunsoft.dll,完成在新工程中对它的引用。
在新工程的窗口中绘制一个按钮,为它增加单击事件。
Dim k() As String
k = ArrayHelper.StringArray("1", "2222")
Stop
可以看到我们可以直接访问到ArrayHelper提供的方法了。
本文详细介绍了如何在VB6中创建一个ActiveX DLL,该DLL支持静态函数调用,使用户能够直接访问封装的类方法,而无需创建对象实例。通过配置类属性和导出DLL,实现了在其他VB6工程中直接调用方法的功能。

3006

被折叠的 条评论
为什么被折叠?



