方法一、把菜单定义成数组,添加用Load,删除用Unload。
方法二、用Visible属性,添加就Visible = True,删除就Visible = False。
方法二、用Visible属性,添加就Visible = True,删除就Visible = False。
解决方案 »
- 散分,为生活而散!
- 如何取得DateGrid控件中光标所在的行值???
- vb中是不是不能用backup database啊?
- 急,,如何将WORD 文件转成TIFF文件,答对另开贴子给分...多谢
- 关于DDE明白的人进,解决立刻散分
- 急急急!在VB中如何将16进制,转换程二进制???
- 如何动态控制菜单显示
- 有谁用过oracle odbc driver 连接oracle数据库(8.1.6)
- 怎样取得硬盘序列号,请各位大侠指点啊?快快快!
- 我用 line 画线,为什么在form load过程中没有显示呢,在form activate过程中可以显示 最小化后在恢复又没有了,什么原因。
- 来看看!! 请多多指点!!
- 有关上一次的调查,您是用GRID...还是什么的;再提提一下
我需要的是那种用代码真正的动态添加上的项想加几个都行如果用方法论二的话局限性太大了。
方法一,我没试过不过看上去不大可能就酸可能也无法控制每个项的顺序。
我要的是象解霸播放器的播放列表的那样的功能。
先放一个菜单,叫mnuFiles 其中index=0然后
for i=1 to 4
load mnufiles(i)
mnufiles(i).visible=true
next 就有了4个菜单了
至于怎么控制,你自己考虑就可以了
比如
private sub mnuFIles_click(index as integer)
debug.print "Select:",index
end sub
====================================================================
GetMenu VB声明
Declare Function GetMenu Lib "user32" Alias "GetMenu" (ByVal hwnd As Long) As Long
说明
取得窗口中一个菜单的句柄
返回值
Long,依附于指定窗口的一个菜单的句柄(如果有菜单);否则返回零
参数表
参数 类型及说明
hwnd Long,窗口句柄。对于vb,这应该是一个窗体句柄。注意可能不是子窗口的句柄 ====================================================================
GetSubMenu VB声明
Declare Function GetSubMenu Lib "user32" Alias "GetSubMenu" (ByVal hMenu As Long, ByVal nPos As Long) As Long
说明
取得一个弹出式菜单的句柄,它位于菜单中指定的位置
返回值
Long,位于指定位置的弹出式菜单的句柄(如果有的话);否则返回零
参数表
参数 类型及说明
hMenu Long,菜单的句柄
nPos Long,条目在菜单中的位置。第一个条目的编号为0
====================================================================
GetMenuItemCount VB声明
Declare Function GetMenuItemCount Lib "user32" Alias "GetMenuItemCount" (ByVal hMenu As Long) As Long
说明
返回菜单中条目(菜单项)的数量
返回值
Long,菜单中的条目数量;-1意味着出错。会设置GetLastError
参数表
参数 类型及说明
hMenu Long,目标菜单的句柄
====================================================================
GetMenuItemID VB声明
Declare Function GetMenuItemID Lib "user32" Alias "GetMenuItemID" (ByVal hMenu As Long, ByVal nPos As Long) As Long
说明
返回位于菜单中指定位置处的条目的菜单ID
返回值
Long,指定条目的菜单ID。如条目属于一个弹出式菜单,就返回-1;如指定的条目属于一个分隔符(比如一条分隔线)则返回0
参数表
参数 类型及说明
hMenu Long,菜单的句柄
nPos Long,条目在菜单中的位置。第一个条目的编号是0
Declare Function CreatePopupMenu Lib "user32" Alias "CreatePopupMenu" () As Long
说明
创建一个空的弹出式菜单。可用AppendMenu或InsertMenu函数在窗口中添加条目,或者为一个现成的菜单添加弹出式菜单,并在新建的菜单中添加条目
返回值
Long,如成功,返回一个菜单句柄;零意味着错误
注解
并不推荐用这个函数来创建备用的vb菜单,除非是为TrackPopupMenu函数生成菜单。这个窗口中使用的命令ID必须与现有vb菜单控件的ID相符。或者用一个子类处理控件进行管理
====================================================================
AppendMenu VB声明
Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
说明
在指定的菜单里添加一个菜单项
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hMenu Long,菜单句柄
wFlags Long,参考ModifyMenu函数中的菜单常数标志定义表,其中列出了允许使用的所有常数
wIDNewItem Long,指定菜单条目的新命令ID。如果在wFlags参数中指定了MF_POPUP字段,那么这应该是指向一个弹出式菜单的句柄
lpNewItem String(相应的vb声明见注解),如果在wFlags参数中指定了MF_STRING标志,这就代表在菜单中设置的字串。如设置了MF_BITMAP标志,这就代表一个Long型变量,其中包含了一个位图句柄。如设置了MF_OWNERDRAW,这个值就会包括在DRAWITEMSTRUCT和MEASUREITEMSTRUCT结构中,在条目需要重画的时候由windows发送出去 ====================================================================
InsertMenu VB声明
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
说明
在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hMenu Long,菜单的句柄
nPosition Long,定义了新条目插入点的一个现有菜单条目的标志符。如果在wFlags中指定了MF_BYCOMMAND标志,这个参数就代表欲改变的菜单条目的命令ID。如设置的是MF_BYPOSITION标志,这个参数就代表菜单条目在菜单中的位置,第一个条目的位置为零
wFlags Long,一系列常数标志的组合。参考ModifyMenu
wIDNewItem Long,指定菜单条目的新菜单ID。如果在wFlags中指定了MF_POPUP标志,就应该指定弹出式菜单的一个句柄
lpNewItem 如果在wFlags参数中设置了MF_STRING标志,就代表要设置到菜单中的字串(String)。如设置的是MF_BITMAP标志,就代表一个Long型变量,其中包含了一个位图句柄
注解
在vb里使用:这个函数做出的许多改变都可以正常发挥作用,但却不能由vb菜单对象反映出来。添加的命令ID必须能由vb菜单系统识别
====================================================================
DeleteMenu VB声明
Declare Function DeleteMenu Lib "user32" Alias "DeleteMenu" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
说明
删除指定的菜单条目(在vb里使用:强烈建议用vb菜单的visible属性从菜单中删除条目。如使用这个函数,会造成指定菜单其他菜单条目的visible属性错误的影响菜单条目)
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hMenu Long,菜单句柄
nPosition Long,欲删除菜单条目的标识符。如在wFlags中设置了MF_BYCOMMAND标志,这个参数就代表要改变的菜单条目的命令ID。如设置了MF_BYPOSITION标志,这个参数就代表条目在菜单中的位置(头一个条目肯定是零)
wFlags Long,MF_BYPOSITION或MF_BYCOMMAND,具体由nPosition参数决定
注解
如条目连接了一个弹出式菜单,就会清除弹出式菜单。用RemoveMenu函数清除一个弹出式菜单条目,同时不影响整个弹出式菜单
====================================================================
DestroyMenu VB声明
Declare Function DestroyMenu Lib "user32" Alias "DestroyMenu" (ByVal hMenu As Long) As Long
说明
删除指定的菜单。如菜单属于另一个菜单的一部分,或直接分配给一个窗口,那么菜单会在窗口清除后被自动删除
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hMenu Long,欲删除菜单的句柄
注解
这个函数通常用于CreateMenu和CreatePopupMenu函数创建的菜单