本例是通過VB5.0建立ActiveX DLL檔案,這個檔案類比了一個擲色子的過程。
建立一個工程,並雙擊建立工程視窗中 ActiveX DLL表徵圖,VB將自動為項目添加一個類別模組,並將該項目類型設定為ActiveX DLL。在屬性視窗將類別模組的名稱屬性改為clsDice。從工程菜單中,選擇工程屬性,將工程名稱改為MyDLL。從檔案菜單中,選擇儲存 clsDice,將類別模組儲存為myDice.cls。添加以下代碼:
Option Explicit
Private Max, Point As Integer
Public Property Get Result() As Integer
Result = Point
End Property
Public Property Get Maxpoint() As Integer
Maxpoint = Max
End Property
Public Property Let Maxpoint(num As Integer)
Max = num
End Property
Public Sub Throw()
Randomize
Point = Int(Rnd * Max) + 1
End Sub
Private Sub Class_Initialize()
Max = 6
End Sub
這個類別模組定義了clsDice對象的兩個屬性和一個方法,這些屬性和方法類比了擲色子的過程。其中Maxpoint屬性工作表示色子的面數,加入 Property Let語句將使客戶能修改色子的面數;Result屬性工作表示最後擲出色子的點數;Throw方法代表擲色子的動作;Private Sub Class_Initialize語句將色子的面數預設的設定為6面。
從檔案菜單中,選擇產生MYDLL.DLL並將它儲存到適當的地方。至此,我們就建立了一個自己的DLL檔案。
第二步要做的就是要在ASP檔案中引用類clsDice。
ASP(活動伺服器頁面Active Server Pages)的所有代碼都是在伺服器上啟動並執行,客戶只能查看以HTML形式傳回的結果。它使用“ <%”和“%> ”標記來標識指令碼代碼,並不傳回用戶端,在代碼外部,使用HTML標記來標識內容。在下面Dice.asp的代碼中使用了CreateObject函數創 建了一個clsDice對象執行個體,該對象來自於上面建立的ActiveX.DLL--MYDLL.DLL檔案,下面的例子使用了VBScript指令碼語 言。
<!--METADATA TYPE= "typelib " FILE= "Path/mydll.dll " -->
'裝載 METADATA 標籤中指定的類型庫。 Path是mydll.dll在機器上存放的路徑
<html>
<head> <title> 在ASP檔案使用DLL </title> </head>
<body>
<%
On Error Resume Next ‘當程式出現意外錯誤時能繼續執行
If Request.Form( "T1 ")= " " then
Session( "point ") = 6
Else
Session( "point ")=Request.Form( "T1 ")
End If
'用Session( "point ")來存放色子的面數
Set dice1=Server.Createobject( "MyDLL.clsDice ")
'使用set語句建立dice1對象,其中MyDLL是上面建立dll檔案時的工程名稱(注意:不是檔案的名稱),clsDice為類別模組的名稱。至此我們就可以用Maxpoint,Result和Throw屬性(方法)來對dice1對象進行操作。
If Request.ServerVariables( "Request_Method ")= "POST " then
dice1.Maxpoint = Session( "point ") ‘設定色子的面數
dice1.Throw ’擲色子
%>
<form method= "POST " action= "dice.asp ">
<p> 當色子的面數為 <input type= "text " name= "T1 " size= "5 " value= <% = session( "point ") %> > 時 </p>
<p> <input type= "submit " value= "擲色子 " name= "B1 "> </p>
</form>
<p> 結果為: <% = dice1.Result %> 點 </p> ‘返回結果
<%
Else
dice1.Maxpoint = Session( "point ")
%>
<form method= "POST " action= "dice.asp ">
<p> 當色子的面數為 <input type= "text " name= "T1 " size= "5 " value= <% = session( "point ") %> > 時 </p>
<p> <input type= "submit " value= "擲色子 " name= "B1 "> </p>
</form>
<%
End If
%>
</body>