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] 下一页 没有相关教程
|