第一步,在编程环境的菜单里选“工具”、“菜单编辑器”,就会d出一个“菜单编辑器”窗口。
第二步,在窗口里的最上面一行输入“查看”,在“快捷键”里输入“Alt-E”,然后“下一个”
第三步,同第二步一样输入“编辑”
第四步,同第二步一样输入“帮助”
第五步,点“确定”,就会返回到窗体界面,菜单已经加好了。
在窗体出现的情况下,由VB编程环境的菜单中选工具,在其下拉菜单下选菜单编辑器,然后按如下说明 *** 作:“菜单编辑器”对话框
使用菜单编辑器可以为应用程序创建自定义菜单并定义其属性。
对话框选项
“标题”
使用该选项可以输入菜单名或命令名,这些名字出现在菜单条或菜单之中。
如果想在菜单中建立分隔符条,则应在Caption 框中键入一个连字符 (-)。
为了能够通过键盘访问菜单项,可在一个字母前插入 & 符号。在运行时,该字母带有下划线(& 符号是不可见的),按 ALT 键和该字母就可访问菜单或命令。如果要在菜单中显示 & 符号,则应在标题中连续输入两个 & 符号。
“名称”
允许为菜单项输入控件名。控件名是标识符,仅用于访问代码中的菜单项;它不会出现在菜单中。
“索引”
可指定一个数字值来确定控件在控件数组中的位置。该位置与控件的屏幕位置无关。
“快捷键”
允许为每个命令选定快捷键。
“帮助上下文 ID”
允许为 context ID 指定唯一数值。在 HelpFile 属性指定的帮助文件中用该数值查找适当的帮助主题。
“协调位置”
允许选择菜单的 NegotiatePosition 属性。该属性决定是否及如何在容器窗体中显示菜单。
“复选”
允许在菜单项的左边设置复选标记。通常用它来指出切换选项的开关状态。
“激活的”
由此选项可决定是否让菜单项对事件做出响应,而如果希望该项失效并模糊显示出来,则也可清除事件。
“可视的”
将菜单项显示在菜单上。
“显示窗口列表”
在 MDI 应用程序中,确定菜单控件是否包含一个打开的 MDI 子窗体列表。
“右箭头”
每次单击都把选定的菜单向右移一个等级。一共可以创建四个子菜单等级。
“左箭头”
每次单击都把选定的菜单向上移一个等级。一共可以创建四个子菜单等级。
“上箭头”
每次单击都把选定的菜单项在同级菜单内向上移动一个位置。
“下箭头”
“下箭头”
每次单击都把选定的菜单项在同级菜单内向下移动一个位置。
“菜单列表”
该列表框显示菜单项的分级列表。将子菜单项缩进以指出它们的分级位置或等级。
“下一个”
将选定移动到下一行。
“插入”
在列表框的当前选定行上方插入一行。
“删除”
删除当前选定行。
“确定”
关闭菜单编辑器,并对选定的最后一个窗体进行修改。菜单可以在设计时使用,但在设计时可以通过选定一个菜单,来打开菜单单击事件的“代码”窗口,而不是执行事件代码。
“取消”
关闭菜单编辑器,取消所有修改。方法1:使用菜单数组
在文件菜单里增加一个菜单项,标题任意,现在假设菜单项的Name属性是mnuDynamic
更改菜单项mnuDynamic的可见属性,使mnuDynamicVisible=
False
更改菜单项mnuDynamic的下标(索引)属性,使mnuDynamicIndex=0
在程序中控制菜单项mnuDynamic的动态装入。
Load
mnuDynamic(1)
mnuDynamic(1)Caption
=
"动态菜单1"
mnuDynamic(1)Visible
=
True
方法2:使用用API函数
新建一个模块,复制以下代码。
Public
Declare
Function
SetWindowLong
Lib
"user32"
Alias
"SetWindowLongA"
(ByVal
hwnd
As
Long,
ByVal
nIndex
As
Long,
ByVal
dwNewLong
As
Long)
As
Long
Public
Declare
Function
CallWindowProc
Lib
"user32"
Alias
"CallWindowProcA"
(ByVal
lpPrevWndFunc
As
Long,
ByVal
hwnd
As
Long,
ByVal
Msg
As
Long,
ByVal
wParam
As
Long,
ByVal
lParam
As
Long)
As
Long
Public
Const
MF_STRING
=
&H0&
Public
Const
MF_BYCOMMAND
=
&H0&
Public
Const
GWL_WNDPROC
=
(-4)
Public
Const
WM_COMMAND
=
&H111
Public
OldWinProc
As
Long
Public
Function
OnMenu(ByVal
hwnd
As
Long,
ByVal
wMsg
As
Long,
ByVal
wParam
As
Long,
ByVal
lParam
As
Long)
As
Long
'{响应菜单事件}
If
wMsg
=
WM_COMMAND
Then
If
wParam
=
1000
Then
MsgBox
"Dynamic"
End
If
OnMenu
=
CallWindowProc(OldWinProc,
hwnd,
wMsg,
wParam,
lParam)
End
Function
窗体代码:
Private
Sub
Form_Load()
Dim
hMenu
As
Long,
hSubMenu
As
Long
hMenu
=
GetMenu(Mehwnd)
hSubMenu
=
GetSubMenu(hMenu,
0)
InsertMenu
hSubMenu,
0,
MF_BYCOMMAND
Or
MF_STRING,
1000,
"Dynamic"
OldWinProc
=
SetWindowLong(Mehwnd,
GWL_WNDPROC,
AddressOf
OnMenu)
End
SubVB实现窗口的d出式菜单
在Windows95、Windows98或NT的风格中,有按动鼠标器右键d出下拉菜单的 *** 作,在VB执行环境下,有一些控件本身具有d下拉菜单的功能,如TexTbox控件等,但大多数编辑类控件以及窗体本身却没有此功能,要在窗口中任意位置实现PopUpMenu(d出式菜单),可借助VB的菜单工具来实现。
首先,打开VB的“工具”菜单条,利用“菜单编辑器”为窗体生成一个菜单:
标题(Caption) 菜单条名(Name)
编辑 menuEdit
……复制 mnuCopy
……剪切 munCut
其次,将生成的menuEdit菜单设置为不可视。
Private Sub Form_Load()
MemenuEditVisibe=False
′menuEdit菜单设置为不可视
End Sub
然后,利用MouseDown事件实现任意位置d出PopUpMenu,如下例:
本例中以RichTexBox控件为例,在其上面实现复制、剪切功能。
1.复制功能的实现。
Private Sub MnuCopy_Click()
ClipboarClear′将剪贴板清空
′将RichTexBox控件上选择上的内容复制到剪贴板
ClipboardSetTextRichTexBox1SelText
End Sub
2.剪切功能的实现。
Private Sub MnuCut_Click()
ClipboardClear ′将剪贴板清空
′将RichTextBox控件上选择了的内容复制到剪贴板
ClipboardSetTextRichBox1SelText
′将RichTexBox控件上选择了的内容删除
SendKeys〃{DELETE}〃,True
End Sub
3.在RichTexBox控件的MouseDown事件中实现任意位置d出PopUPMenu。
OPrivate Sub RichTexBox1_MouseDown(Button As Integer,Shift As Integer,x As Single,Y As Single)
Dim MnuFile AS Menu ′声明一个菜单类型的变量
Set munFile=MeMenuEdit ′将MenuEdit赋给菜单变量
if Button=2 Then ′判断是否按动鼠标器右键
′判断RichTexBox控件上选择了的内容是否存在,决定复制、剪切菜单条是否可 *** 作。
If Len(RichTexBoxText)=0 Or Len(RichTexBoxSelText)=0 Then
mnuCopyEnabled=Flase ′复制菜单条不可 *** 作。
nmuCutEnabled=False ′剪切菜单条不可 *** 作。
nmuCopyEnabled=True ′复制菜单条可 *** 作。
nmuCutEnabled=True ′剪切菜单条可 *** 作。
End IF
PopupMenu mnuFile ′d出PopUpMenu。
End If
End Sub
这样,在VB执行环境中, *** 作窗体上的RichTexBox控件,按动鼠标器右键就可d出下拉菜单,实现复制、剪切功能。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)