有如何在这个建立好了的子菜单中加一个SubCust2_3,使之介于SubCust2,SubCust3之间?(就是变成SubCust1,SubCust2,SubCust2_3,SubCust3)请教!

解决方案 »

  1.   

    假设已经用菜单编辑器建立好如下菜单:
    文件
    ....打开
    ........旧文件
    也就是“文件”菜单中有“打开”菜单,“打开”菜单中有“旧文件”菜单项。
    下面的代码可以分别在“文件”菜单和“打开”菜单中添加新的菜单项。
    如果再使用物图绘图技术的话,能制作出漂亮的XP风格菜单(当然对于你的问题这不是重点)。
    ' 运行前先建立好菜单,再添加一个按钮,运行时单击按钮添加菜单项。Option Explicit
    Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
    Private Declare Function InsertMenuItem Lib "user32" Alias "InsertMenuItemA" (ByVal hMenu As Long, ByVal un As Long, ByVal bool As Boolean, ByRef lpcMenuItemInfo As MENUITEMINFO) As Long
    Private Type MENUITEMINFO
        cbSize As Long
        fMask As Long
        fType As Long
        fState As Long
        wID As Long
        hSubMenu As Long
        hbmpChecked As Long
        hbmpUnchecked As Long
        dwItemData As Long
        dwTypeData As String
        cch As Long
    End Type
    Private Const MIIM_STRING = &H40Private Sub Command1_Click()
    Dim hMenu As Long, mnuItem As MENUITEMINFO
    hMenu = GetMenu(Me.hwnd)
    hMenu = GetSubMenu(hMenu, 0)
    With mnuItem
        .cbSize = Len(mnuItem)
        .fMask = MIIM_STRING
        .dwItemData = True
        .wID = 1
        .dwTypeData = "新加的文件菜单项"
        .cch = Len(.dwTypeData)
    End With
    InsertMenuItem hMenu, 1, True, mnuItemhMenu = GetSubMenu(hMenu, 0)
    With mnuItem
        .cbSize = Len(mnuItem)
        .fMask = MIIM_STRING
        .dwItemData = True
        .wID = 1
        .dwTypeData = "新加的打开菜单项"
        .cch = Len(.dwTypeData)
    End With
    InsertMenuItem hMenu, 1, True, mnuItem
    End Sub