排列五玩法中奖说明:vb 6.0 怎样自己写菜单

来源:百度文库 编辑:中科新闻网 时间:2024/05/03 05:50:20
在工程里面因为有好多窗体,而大多数窗体都有相同的菜单,所以我想在模块里面写一个公共函数来生成菜单,然后每个页面调用一下就行了。不知道怎样代码怎么写请高手帮帮忙,我一定把分数全追加给你。

'可以使用VB的API函数

Option Explicit

Private Const MF_POPUP = &H10&
Private Const MF_STRING = &H0&

Private Const MF_SEPARATOR = &H800&
Private Const MF_BYPOSITION = &H400&

Private Declare Function CreateMenu Lib "user32" () As Long
Private Declare Function CreatePopupMenu Lib "user32" () As Long
Private Declare Function InsertMenu Lib "user32" Alias "InsertMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
Private Declare Function ModifyMenu Lib "user32" Alias "ModifyMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpString As Any) As Long

Private Declare Function SetMenu Lib "user32" (ByVal hwnd As Long, ByVal hMenu As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long

Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long

Dim hMenu As Long
Dim hFileSubMenu As Long
Dim hHelpSubMenu As Long

Private Sub Form_Load()
Me.Show
hMenu = CreateMenu()
hFileSubMenu = CreatePopupMenu()
hHelpSubMenu = CreatePopupMenu()

InsertMenu hMenu, 0, MF_BYPOSITION, 0, "&File"
InsertMenu hMenu, 1, MF_BYPOSITION, 1, "&Edit"
InsertMenu hMenu, 2, MF_BYPOSITION, 2, "&View"
InsertMenu hMenu, 3, MF_BYPOSITION, 3, "&Help"

ModifyMenu hMenu, 0, MF_POPUP, hFileSubMenu, "&File"
hFileSubMenu = GetSubMenu(hMenu, 0)
InsertMenu hFileSubMenu, 0, MF_BYPOSITION, 1001, "&New"
InsertMenu hFileSubMenu, 1, MF_BYPOSITION Or MF_SEPARATOR, 1002, ""
InsertMenu hFileSubMenu, 2, MF_BYPOSITION, 1003, "&Exit"

ModifyMenu hMenu, 3, MF_POPUP, hHelpSubMenu, "&Help"
hHelpSubMenu = GetSubMenu(hMenu, 3)
InsertMenu hHelpSubMenu, 0, MF_BYPOSITION, 4001, "&About..."
InsertMenu hHelpSubMenu, 1, MF_BYPOSITION Or MF_SEPARATOR, 4002, ""
InsertMenu hHelpSubMenu, 2, MF_BYPOSITION, 4003, "&Help"

SetMenu Me.hwnd, hMenu
DrawMenuBar Me.hwnd
End Sub

如果你的意思是为了在编程的时候更方便(省去繁复的添加菜单工作),可以新建一个空的form,在里面把菜单内容写好,然后复制很多同样的这个窗体添加到Project里面去

或者是用记事本把*.frm文件打开,找到
Begin VB.Form <窗体名称>
......其他窗体属性......

-----------------------------------------------
Begin VB.Menu <首级菜单栏1名称>
Caption = "<菜单栏1标题>"
Begin VB.Menu <第二级菜单栏1名称>
Caption = "<标题1>"
End
Begin VB.Menu <第二级菜单栏2名称>
Caption = "<标题2>"
End
End
Begin VB.Menu <首级菜单栏2名称>
Caption = "<标题2>"
End
...............
-----------------------------------------------
End

将这一部分描述菜单的内容复制到每个窗体的这个位置。

或者是在窗体中建立一个菜单,只有一级一个菜单,“index(索引)”填写“0”,名称是Menu
在form_load事件中写上:
Dim I%
Dim S
S = Array("", "menu1", "menu2", "menu3", "menu4", "menu5")
For I = 1 To 5
Load Menu(I)
Menu(I).Caption = S(I)
Next I

这个方法可以自己去体会体会