谢谢

解决方案 »

  1.   

    Option ExplicitPrivate 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 LongPrivate 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 LongPrivate Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As LongDim hMenu As Long
    Dim hFileSubMenu As Long
    Dim hHelpSubMenu As LongPrivate 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
      

  2.   

    如果用CreateMenu来动态创建菜单,就要通过拦截WM_COMMAND消息,并通过ID来判断是哪个菜单被点,然后写处理的代码
      

  3.   

    拦截WM_COMMAND消息 是不是需要跟一个窗体相关联的?
    popupmenu本身并没有这种事件的吧?
    我的另一个帖子也跟popupmenu相关,happy_sea(开心海) 能不能帮忙看看?
    http://community.csdn.net/Expert/TopicView3.asp?id=5006261
      

  4.   

    http://www.china-askpro.com/msg6/qa80.shtml