Visual Basic的類對於物件導向的支援 (轉)

worldblog發表於2007-12-15
Visual Basic的類對於物件導向的支援 (轉)[@more@]

VB最為人垢病的是它的面向特性。實際上VB是一種基於物件的開發工具。在VB中
建立的類是支援繼承的。下面是範例:

首先建立一個新工程,然後新增一個新的類模組(Class Module),類名稱設定為BaseClass。
然後在BaseClass中加入以下程式碼:

Public Sub BaseSub() '虛擬特性,BaseSub在子類中實現

End Sub

然後新增兩個類模組,類名稱分別設定為ImpClass以及ImpClass2,然後在類的程式碼視窗中寫入:
Implements BaseClass '繼承特性
上面這行程式碼說明類ImpClass以及ImpClass2實現類BaseClass。
在ImpClass視窗中加入以下程式碼:
Private Sub BaseClass_BaseSub() '實現基類中的BaseSub方法
MsgBox "Hello. This is Imp. inherited from BaseClass"
End Sub

在ImpClass2中加入以下程式碼:
Private Sub BaseClass_BaseSub()
MsgBox "Hello. This is Imp2. inherited from BaseClass"
End Sub

完成了上面的類程式碼後,開啟Form1,在上面新增一個Commanutton,在按鈕的Click事件中
寫入以下程式碼:

Dim xImp As New ImpClass
Dim xIMp2 As New ImpClass2
Dim xBase As BaseClass

Set xBase = xImp '多型特性
xBase.BaseSub
Set xBase = xIMp2
xBase.BaseSub
Set xBase = Nothing

Set xImp = Nothing
Set xIMp2 = Nothing


執行,點選CommandButton,程式會先後彈出訊息框,顯示在ImpClass以及ImpClass2中
設定的訊息。
從上面的程式碼中可以看到VB中是如何實現物件導向的特性:繼承、虛擬以及多型的。只是同
諸如、C++、 Pascal不同,VB將很多實現的細節隱藏了起來。


問:如何遮蔽掉窗體中的關閉按鈕X?
答:可以使用將窗體選單中的 關閉 項灰掉,因為選單同關閉按鈕是關聯的,這樣關閉
按鈕也會不可用。具體程式碼如下:

Option Explicit

Private Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, _
ByVal wFlags As Long) As Long
Private Declare Function EnableMenuItem Lib "user32" _
(ByVal hMenu As Long, ByVal wnableItem As Long, _
ByVal wEnable As Long) As Long

Const SC_CLOSE = &HF060

Private Sub Form_Load()
Dim hMenu As Long

hMenu = GetSystemMenu(Me.hwnd, 0)
RemoveMenu hMenu, &HF060, &H200&
De.Print EnableMenuItem(hMenu, SC_CLOSE, 1)
End Sub

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993785/,如需轉載,請註明出處,否則將追究法律責任。

相關文章