如何动态加载菜单项目

letian_now 2006-09-11 08:12:53
谢谢
...全文
369 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kmlxk0 2006-09-11
  • 打赏
  • 举报
回复
菜单数组可以动态增加菜单
esprit0318 2006-09-11
  • 打赏
  • 举报
回复
拦截WM_COMMAND消息 是不是需要跟一个窗体相关联的?
popupmenu本身并没有这种事件的吧?
我的另一个帖子也跟popupmenu相关,happy_sea(开心海) 能不能帮忙看看?
http://community.csdn.net/Expert/TopicView3.asp?id=5006261
happy_sea 2006-09-11
  • 打赏
  • 举报
回复
如果用CreateMenu来动态创建菜单,就要通过拦截WM_COMMAND消息,并通过ID来判断是哪个菜单被点,然后写处理的代码
iamxiang 2006-09-11
  • 打赏
  • 举报
回复
把控件设成索引,然后添加索引!
添加代码时用索引来定位就可以了~
esprit0318 2006-09-11
  • 打赏
  • 举报
回复
一楼朋友的代码只是动态生成菜单,还未给菜单事件添加代码呢
---------------------------------------------------------
请问楼上菜单事件添加应该是怎么做的?
happy_sea 2006-09-11
  • 打赏
  • 举报
回复
一楼朋友的代码只是动态生成菜单,还未给菜单事件添加代码呢
letian_now 2006-09-11
  • 打赏
  • 举报
回复
有没有不用API的方法呢?
pcwe2002 2006-09-11
  • 打赏
  • 举报
回复
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 cmdCreate_Click()
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_BYaPOSITION, 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
happy_sea 2006-09-11
  • 打赏
  • 举报
回复
http://www.china-askpro.com/msg6/qa80.shtml

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧