请问如何在菜单中放入图片

lingjiadong 2003-05-10 11:18:01
我要做的效果就是在菜单中的每个项目的最前面放入小图片,和VB的菜单效果一样,我用imagelist好象关联不上,请问有没有别的方法,请写出实现的步骤。谢谢!
...全文
61 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbangle 2003-07-09
  • 打赏
  • 举报
回复
在VB开发环境中,您也许见多了XP菜单源码或控件,但是至今为止你也许没有找到一款适应目前所有操作系统、没有BUG、全面支持MDI窗口和系统菜单、完全模拟MS OfficeXP 风格菜单的XP菜单控件,VsNetMenu就是这样一款您已经找了很久的菜单控件,她号称VB下实现XP风格菜单的终极控件,纯VB6开发,零代码轻松实现XP菜单效果
  下载地址:http://5ivb.net/club/dispbbs.asp?boardID=113&ID=18997

  ftp://upload:upload@upload.skycn.com/vsnetmenu.exe
lihonggen0 2003-05-10
  • 打赏
  • 举报
回复
http://www.21code.com/codebase/?pos=down&id=612
lihonggen0 2003-05-10
  • 打赏
  • 举报
回复
http://www.21code.com/codebase/?pos=list&type=subclass&mainclass=1&subclass=12
hi128 2003-05-10
  • 打赏
  • 举报
回复
在VB中创建位图菜单
 一、设计思路

 在通常的程序中,菜单项总以文本方式显示,非常单调乏味。如果能够在菜单项中加入位图,则能极大地美化程序的用户界面。但VB初学者一般都对此心存畏惧。其实,在菜单项中加入位图非常简单,可以使用函数SetMenuItemBitmaps来为菜单项添加位图。调用该函数时需要用到弹出菜单的句柄,以及要添加的位图,弹出菜单的句柄可以使用API函数GetMenu与GetSubMenu来获得,位图则可以通过在窗体上放置图像框控件来提供。

 二、编程实例
 
 新建一个EXE工程,为窗体设计出菜单(如图一),并在窗体上放置4个图像框控件,名称分别为:imopen、 imsave、imprint、imcontent,并在其中载入要显示在菜单项中的位图(如图一)。


      (图一)                  (图二)

打开代码编辑器,输入以下代码:

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 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

Const MF_BYPOSITION = &H400&

'加载窗体
Private Sub Form_Load()
'隐藏4个图像框控件
imopen.Visible = False
imsave.Visible = False
imprint.Visible = False
imcontent.Visible = False
Dim mHandle As Long, lRet As Long, sHandle As Long, sHandle1 As Long
'获得菜单的句柄
mHandle = GetMenu(hwnd)
'获得“文件”菜单的句柄
sHandle = GetSubMenu(mHandle, 0)
'为“打开”菜单项添加位图
lRet = SetMenuItemBitmaps _
(sHandle, 0, MF_BYPOSITION, imopen.Picture.Handle, imopen.Picture.Handle)
'为“保存”菜单项添加位图
lRet = SetMenuItemBitmaps _
(sHandle, 1, MF_BYPOSITION, imsave.Picture, imsave.Picture)
'为“打印”菜单项添加位图
lRet = SetMenuItemBitmaps _
(sHandle, 3, MF_BYPOSITION, imprint.Picture, imprint.Picture)
'获得“其他”菜单的句柄
sHandle = GetSubMenu(mHandle, 1)
'获得“帮助”子菜单的句柄
sHandle1 = GetSubMenu(sHandle, 0)
'为“内容”菜单项添加位图
lRet = SetMenuItemBitmaps _
(sHandle1, 0, MF_BYPOSITION, imContent.Picture, imContent.Picture)
End Sub

 现在按F5看看,效果怎么样?如图二。

 三、总结

 GetMenu函数的功能是获得窗体菜单的句柄。它的返回值即为菜单的句柄,如果窗体没有菜单,则返回NULL。其中参数hWnd用来指定具有菜单的窗口的句柄。
GetSubMenu函数的功能是获得弹出菜单的句柄。它的返回值即为菜单的句柄,如出错,则返回NULL。其中各参数的含义如下:
 .hMenu:用来指定弹出菜单的父菜单的句柄。
 .nPos:用来指定弹出菜单在主菜单的位置。值为0时为第一个,值为1时为第二个,依次类推。
 SetMenuItemBitMaps函数的功能是以用户位图来取代缺省菜单检取标志位图。其中各参数的含义如下:
 .hMenu:用来指定菜单句柄。
 .nPosition:指定要改变的菜单项号。
 第一项,值为1时为第二项,依此类推。
 .hBitmapUnchecked:用来指定当菜单项非检取时要显示的位图位图句柄。
 .hBitmapChecked:用来指定当菜单项检取时要显示的位图句柄。

 通过此例,我们可以看出,使用API函数的关键在于要弄清楚API函数的功能以及它的各个参数的含义,这既是API函数的难点,也是VB初学者的重点。

lingjiadong 2003-05-10
  • 打赏
  • 举报
回复
楼上两位给的网址怎么下了是空的东西,你们核对一下看是不是这样的,全都是一个文件在包里面,sorry.txt

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧