【VB6】实现VB6中类的静态方法

原创文章,欢迎支持

在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
DataBindingBehavior0 - vbNone
DataSourceBehavior0 - vbNone
Instancing6 - GlobalMultiUse
MTSTransactionMode0 - NotAnMTSObject
Persistable0 - NotPersistable

编译导出

编译,生成SunSoft.dll

使用方法

新建一个普通exe工程,然后在工程-引用-浏览(B)...中选择Sunsoft.dll,完成在新工程中对它的引用。
在新工程的窗口中绘制一个按钮,为它增加单击事件。

Dim k() As String
k = ArrayHelper.StringArray("1", "2222")
Stop

可以看到我们可以直接访问到ArrayHelper提供的方法了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值