【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
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提供的方法了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章