菜单上增加图标声明:
Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Declare Function SetMenuItemBitmaps Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long
Public Const MF_BITMAP = &H4&
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
Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal b As Boolean, lpMenuItemInfo As MENUITEMINFO) As Boolean
Public Const MIIM_ID = &H2
Public Const MIIM_TYPE = &H10
Public Const MFT_STRING = &H0&
使用: 在 Form1 中增加一个 PictureBox1, AutoSize 为 True, 放一个小 Bmp (不是 Icon!推荐 13*13)。
Private Sub Command1_Click()'Get the menuhandle of your app
hMenu& = GetMenu(Form1.hwnd)'Get the handle of the first submenu (Hello)
hSubMenu& = GetSubMenu(hMenu&, 0)'Get the menuId of the first entry (Bitmap)
hID& = GetMenuItemID(hSubMenu&, 0)'Add the bitmap
SetMenuItemBitmaps hMenu&, hID&, MF_BITMAP, Picture1.Picture, Picture1.Picture
'You can add two bitmaps to a menuentry
'One for the checked and one for the unchecked
'state.End Sub
Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Declare Function SetMenuItemBitmaps Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long
Public Const MF_BITMAP = &H4&
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
Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal b As Boolean, lpMenuItemInfo As MENUITEMINFO) As Boolean
Public Const MIIM_ID = &H2
Public Const MIIM_TYPE = &H10
Public Const MFT_STRING = &H0&
使用: 在 Form1 中增加一个 PictureBox1, AutoSize 为 True, 放一个小 Bmp (不是 Icon!推荐 13*13)。
Private Sub Command1_Click()'Get the menuhandle of your app
hMenu& = GetMenu(Form1.hwnd)'Get the handle of the first submenu (Hello)
hSubMenu& = GetSubMenu(hMenu&, 0)'Get the menuId of the first entry (Bitmap)
hID& = GetMenuItemID(hSubMenu&, 0)'Add the bitmap
SetMenuItemBitmaps hMenu&, hID&, MF_BITMAP, Picture1.Picture, Picture1.Picture
'You can add two bitmaps to a menuentry
'One for the checked and one for the unchecked
'state.End Sub
一:自绘菜单:
我编的自绘菜单:http://zyl910vb.51.net/vb/wdzp/DrawMenu-S.htm(有注释!特地为想学自绘菜单的人写的)
http://zyl910vb.51.net/vb/wdzp/CoolGUI.htm(效果比较好,但没有注释)
http://zyl910vb.51.net/vb/wdzp/ZXPMenu.htm(XP风格的菜单)(注意把下载后的*.zip.jpg改名成*.zip)二:用窗体模拟菜单:
http://www.dapha.net/vb/list.asp?id=748
XP下拉菜单(影子效果)http://www.21code.com/codebase/?pos=down&id=1913
源码类型: VisualBasic源码-菜单处理
上传时间: 2002-02-01
下载次数: 1336
源码大小: 46 KB 源码评价: 源码简介:
OFFICE XP风格菜单代码最新版
' * 只使用两个API函数,没有太大的难度,只是在界面设置方面比较多参数,不过都只是很简单的。
' * 由于时间关系,和有很多工作在身,动态图标只做了两个,例程中没有写成模块。如果那位人
' 兄有兴趣可改写本例程,但希望发布时也给小弟留一份,E-MAIL 是 [email protected] ,并也希望
' 在你的例程中留下小弟的名字和 E-MAIL ,如果不愿意就算了。
' * 如有任何技术问题请以电子邮件形式呼叫。
'http://mkd-lighting.com.cn/mort/Microsoft%20Office%20XP%20Menu.zip