北京奥运会投稿:vb原代码求解释功能,请进

来源:百度文库 编辑:高考问答 时间:2024/05/02 07:56:30
模块5
MDIFormmain
Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Sub aaa_Click()

End Sub

Private Sub MDIForm_Resize()
'adjust form size which form in.
Dim ClientRect As RECT
GetClientRect Me.hwnd, ClientRect
FrmMenu.Move 0, 0, 15 * (ClientRect.Right - ClientRect.Left), 15 * (ClientRect.Bottom - ClientRect.Top)
FrmMenu.Visible = True
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)
mvarCurrentPos = vData
End Property

Public Property Get CurrentPos() As Integer
CurrentPos = mvarCurrentPos
End Property

Public Property Get MenuItem(Index As Integer) As ClsMenuItem
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

MDIFormmain
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