打印本文 打印本文 关闭窗口 关闭窗口
VB打造超酷个性化菜单(二)
作者:武汉SEO闵涛  文章来源:敏韬网  点击数4136  更新时间:2009/4/23 15:44:34  文章录入:mintao  责任编辑:mintao
RTICALCOLOR

    LBS_IMAGE

End Enum

 

Public Enum MenuItemType                                    '''' 菜单项类型

    MIT_STRING = &H0

    MIT_CHECKBOX = &H200

    MIT_SEPARATOR = &H800

End Enum

 

Public Enum MenuItemState                                   '''' 菜单项状态

    MIS_ENABLED = &H0

    MIS_DISABLED = &H2

    MIS_CHECKED = &H8

    MIS_UNCHECKED = &H0

End Enum

 

Public Enum PopupAlign                                      '''' 菜单弹出对齐方式

    POPUP_LEFTALIGN = &H0&                                  '''' 水平左对齐

    POPUP_CENTERALIGN = &H4&                                '''' 水平居中对齐

    POPUP_RIGHTALIGN = &H8&                                 '''' 水平右对齐

    POPUP_TOPALIGN = &H0&                                   '''' 垂直上对齐

    POPUP_VCENTERALIGN = &H10&                              '''' 垂直居中对齐

    POPUP_BOTTOMALIGN = &H20&                               '''' 垂直下对齐

End Enum

 

'''' 释放类

Private Sub Class_Terminate()

    SetWindowLong frmMenu.hwnd, GWL_WNDPROC, preMenuWndProc

    Erase MyItemInfo

    DestroyMenu hMenu

End Sub

 

'''' 创建弹出式菜单

Public Sub CreateMenu()

    preMenuWndProc = SetWindowLong(frmMenu.hwnd, GWL_WNDPROC, AddressOf MenuWndProc)

    hMenu = CreatePopupMenu()

    Me.Style = STYLE_WINDOWS

End Sub

 

'''' 插入菜单项并保存自定义菜单项数组, 设置Owner_Draw自绘菜单

Public Sub AddItem(ByVal itemAlias As String, ByVal itemIcon As StdPicture, ByVal itemText As String, ByVal itemType As MenuItemType, Optional ByVal itemState As MenuItemState)

    Static ID As Long, i As Long

    Dim ItemInfo As MENUITEMINFO

    '''' 插入菜单项

    With ItemInfo

        .cbSize = LenB(ItemInfo)

        .fMask = MIIM_STRING Or MIIM_FTYPE Or MIIM_STATE Or MIIM_SUBMENU Or MIIM_ID Or MIIM_DATA

        .fType = itemType

        .fState = itemState

        .wID = ID

        .dwItemData = True

        .cch = lstrlen(itemText)

        .dwTypeData = itemText

    End With

    InsertMenuItem hMenu, ID, False, ItemInfo

   

    '''' 将菜单项数据存入动态数组

    ReDim Preserve MyItemInfo(ID) As MyMenuItemInfo

   

    For i = 0 To UBound(MyItemInfo)

        If MyItemInfo(i).itemAlias = itemAlias Then

            Class_Terminate

            Err.Raise v

上一页  [1] [2] [3] [4] [5] [6] [7] [8]  下一页

打印本文 打印本文 关闭窗口 关闭窗口