如何在一个菜单里面有小的位图.txt
来自「VB技巧问答10000例,是一个教程」· 文本 代码 · 共 62 行
TXT
62 行
简 单 的 办 法 是 购 买 ActiveBar控 件 , 它 可 以 实 现 这 个 功 能 (参 考 :http://www.computerworld.com.cn/99/tips/9907/071202_11.asp)。 另 一 个 办 法 是 利 用 API来 实 现 。
下 面 的 这 段 代 码 将 Picture1的 图 形 作 为 菜 单 项 。
首 先 建 立 一 个 模 块 , 并 加 入 下 面 的 语 句 。
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&
将 下 面 的 代 码 加 入 一 个 按 钮 的 Click事 件 :
Private Sub Command1_Click()
' 获 得 你 的 菜 单 的 句 柄
hMenu& = GetMenu(Form1.hwnd)
' 获 得 第 一 个 子 菜 单 的 句 柄
hSubMenu& = GetSubMenu(hMenu&, 0)
' 获 得 第 一 个 菜 单 项
hID& = GetMenuItemID(hSubMenu&, 0)
'加 入 位 图
SetMenuItemBitmaps hMenu&, hID&, MF_BITMAP, _
Picture1.Picture, _
Picture1.Picture
End Sub
上 面 的 代 码 使 菜 单 项 为 图 片 , 如 果 你 只 希 望 菜 单 项 的 左 边 有 一 个 小 位 图 , 而 右 边 仍 为 文 字 。 可 以 先 在 Picture1绘 制 图 片 , 在 利 用 Picture1.Print加 上 文 字 , 然 后 用 Picture1.Picture加 入 菜 单 项 。
<END>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?