就是在在菜单项中加入位图图形

解决方案 »

  1.   

    创建位图菜单其实非常简单,可以使用API函数SetMenuItemBitmaps来为菜单项添加位图。调用该函数时需要用到弹出菜单的句柄,以及要添加的位图。    弹出菜单的句柄可以使用API函数GetMenu与GetSubMenu来获得。位图则可以通过在窗体上放置图像框控件来提供。Option Explicit
    Private Declare Function GetMenu Lib "user32" _
       (ByVal hwnd As Long) As LongPrivate Declare Function GetSubMenu Lib "user32" _
       (ByVal hMenu As Long, ByVal nPos As Long) As LongPrivate 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 LongConst MF_BYPOSITION = &H400&Private Sub Form_Load()
        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
    欢迎光临电脑爱好者论坛 bbs.cfanclub.net
      

  2.   

    LoveBH(IT狗狗) 的方法只能添加16色13*13像素的图标,这样添加的图标效果不是很好,而且13*13的图标也很难找。大多数据应用程序用的是自绘菜单。
    http://go6.163.com/910grtd/vb/wdzp/DrawMenu-S.htm
    上面是API版主zyl910的自绘菜单代码。如果用DELHPI就不用那么麻烦了。
      

  3.   

    一、设计思路 在通常的程序中,菜单项总以文本方式显示,非常单调乏味。如果能够在菜单项中加入位图,则能极大地美化程序的用户界面。但VB初学者一般都对此心存畏惧。其实,在菜单项中加入位图非常简单,可以使用函数SetMenuItemBitmaps来为菜单项添加位图。调用该函数时需要用到弹出菜单的句柄,以及要添加的位图,弹出菜单的句柄可以使用API函数GetMenu与GetSubMenu来获得,位图则可以通过在窗体上放置图像框控件来提供。 二、编程实例
     
     新建一个EXE工程,为窗体设计出菜单,并在窗体上放置4个图像框控件,名称分别为:imopen、 imsave、imprint、imcontent,并在其中载入要显示在菜单项中的位图打开代码编辑器,输入以下代码:Option Explicit
    '声明
    Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As LongPrivate Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As LongPrivate 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 LongConst 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初学者的重点。
      

  4.   

    通过看以上的代码。这就是决定我为什么选择DELPHI的原故!这在DELPHI里面真的太容易了。!!!
      

  5.   

    http://www.ourfly.com/download/downloadlist.aspx?type=VB
      非常精彩的位图菜单(仿Word2000菜单)
      

  6.   

    可以访问www.vbgood.com
    www.dapha.net
    www.21code.com
    www.vbeden.com
    www.myvc.net
    msdn.microsoft.com
    http://www.vbaccelerator.com/
    http://www.mvps.org/vbnet/
    http://www.freevbcode.com/
    http://www.pscode.com/vb/
    http://www.allapi.net
    和MSDN得到更多的帮助.............
      

  7.   

    XP菜单
    http://www.dapha.net/down/list.asp?id=1863
    XP下拉菜单(影子效果,酷!!!)
    http://www.dapha.net/down/list.asp?id=426
      

  8.   

    告诉我你的邮箱,我有原程序给你!我的 是:[email protected]