Private Declare Function GetClientRect Lib "user32" (ByVal As Long, lpRect As RECT) As Long 'api函數聲明 GetClientRect作用是返回hwnd句柄窗體的RECT(也就是邊框的上下左右,大小之類,找不到合適詞解釋,呵呵)
Private Type RECT '定義RECT,沒辦法VB裏這個東西只能自己定義,聲明
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Sub aaa_Click() 'aaa的單機事件,可惜是空的
End Sub
Private Sub MDIForm_Resize() 'MDI主窗體改變大小的時候,如最大化,最小化,右下角拖拽等
'adjust form size which form in.
Dim ClientRect As RECT '定義RECT變量
GetClientRect Me.hwnd, ClientRect '得到當前窗口的矩形形狀,放到 ClientRect 裏保存,肯定是以後要用
FrmMenu.Move 0, 0, 15 * (ClientRect.Right - ClientRect.Left), 15 * (ClientRect.Bottom - ClientRect.Top) '把frmMenu窗體移到MDI內層的大小
15是由於vb裏默認下,假設顯示設置為800*600,實際的幀就是800*15,600*15,就是個比例關系,又不知道怎麽說好了!
FrmMenu.Visible = True '顯示FrmMenu
End Sub
類模塊
模塊6
Clsmenuitem
'下面申明了幾個類的成員!呵呵,居然都是公***的....
Public seq As Integer
Public caption As String
Public FormOrMenulist As Boolean
Public SubMenulist As ClsMenuList
Public LinkForm As Form
Private Sub Class_Initialize() '類初始化函數
End Sub
模塊7
Clsmenulist
下面申明了幾個類的成員,這次全私有了,暈
Private mvarFatherMenuList As ClsMenuList '局部復制
Private mvarTitle As String '局部復制
Private mvarMenuItemNumber As Integer '局部復制
Private mvarMenuItem(1 To 10) As ClsMenuItem '局部復制
Private mvarCurrentPos As Integer '局部復制
Public Sub IniMenuList(vTitle As String, vFatherMenulist As ClsMenuList) '壹個方法,看看就是得到某個私有成員,可以叫屬性吧呵呵
mvarTitle = vTitle
Set mvarFatherMenuList = vFatherMenulist
End Sub
Public Sub AddMenuItem(vCaption As String, vSeq As Integer, vLink As Variant) '還是方法............
mvarMenuItemNumber = mvarMenuItemNumber + 1
Set mvarMenuItem(mvarMenuItemNumber) = New ClsMenuItem
mvarMenuItem(mvarMenuItemNumber).caption = vCaption
mvarMenuItem(mvarMenuItemNumber).seq = mvarMenuItemNumber
If TypeOf vLink Is Form Then
mvarMenuItem(mvarMenuItemNumber).FormOrMenulist = False
Set mvarMenuItem(mvarMenuItemNumber).LinkForm = vLink
Else
mvarMenuItem(mvarMenuItemNumber).FormOrMenulist = True
Set mvarMenuItem(mvarMenuItemNumber).SubMenulist = vLink
End If
End Sub
Public Property Let CurrentPos(ByVal vData As Integer) '在 Class 塊中,聲明名稱、參數和代碼等,它們構成了賦值(設置)的 Property 過程的主體。
mvarCurrentPos = vData
End Property
Public Property Get CurrentPos() As Integer '在 Class 塊中,聲明構成用來取得(返回)的值的屬性過程的主體的名稱、參數和代碼。
CurrentPos = mvarCurrentPos
End Property
Public Property Get MenuItem(Index As Integer) As ClsMenuItem '在 Class 塊中,聲明構成用來取得(返回)的值的屬性過程的主體的名稱、參數和代碼。
Set MenuItem = mvarMenuItem(Index)
End Property
Public Property Get MenuItemNumber() As Integer 應該看的明白了吧
MenuItemNumber = mvarMenuItemNumber
End Property
Public Property Get Title() As String
Title = mvarTitle
End Property
Public Property Get FatherMenuList() As ClsMenuList
Set FatherMenuList = mvarFatherMenuList
End Property
Private Sub Class_Initialize() '類的初始化
mvarMenuItemNumber = 0
mvarCurrentPos = 1
End Sub