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,在上面添加一个CommandButton,在按钮的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中是如何实现面向对象的特性:继承、虚拟以及多态的。只是同  诸如Java、C++、Object Pascal不同,VB将很多实现的细节隐藏了起来。 
 
  问:如何屏蔽掉窗体中的关闭按钮X?  答:可以使用API函数将窗体菜单中的 关闭 项灰掉,因为菜单同关闭按钮是关联的,这样关闭  按钮也会不可用。具体代码如下: 
  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 wIDEnableItem 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&  Debug.Print EnableMenuItem(hMenu, SC_CLOSE, 1)  End Sub 
  
www.applevb.com  
 
  |