Private Declare Function GetMenu Lib "user32" _
   (ByVal hwnd 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
Private Declare Function GetSubMenu Lib "user32" _
   (ByVal hMenu As Long, ByVal nPos As Long) As Long
Const MF_BYPOSITION = &H400&Private Sub bmxx_Click()
FrmSetDetails.Show
End SubPrivate Sub dxgl_Click()
FrmSetWage.Show
End SubPrivate Sub Form_Load()'显示位图菜单部分代码
'Dim mHandle As Long, lRet As Long, sHandle As Long, sHandle2 As Long
Dim mHandle As Long, lRect As Long, sHandle As Long, sHandle2 As Long
mHandle = GetMenu(hwnd)
sHandle = GetSubMenu(mHandle, 0)
lRet = SetMenuItemBitmaps(sHandle, 0, MF_BYPOSITION, Image1.Picture, Image1.Picture)
lRet = SetMenuItemBitmaps(sHandle, 1, MF_BYPOSITION, Image1.Picture, Image1.Picture)
'lRet = SetMenuItemBitmaps(sHandle, 3, MF_BYPOSITION, Img.ListImages(1), Img.ListImages(1))
'lRet = SetMenuItemBitmaps(sHandle, 4, MF_BYPOSITION, Img.ListImages(1), Img.ListImages(1))
'显示位图菜单部分代码End Sub
调试结果没错,但是位图就是不出来,我晕了,大家帮忙啊!

解决方案 »

  1.   

    lRet = SetMenuItemBitmaps(sHandle, 0, MF_BYPOSITION, Image1.Picture, Image1.Picture)
    lRet = SetMenuItemBitmaps(sHandle, 1, MF_BYPOSITION, Image1.Picture, Image1.Picture)
    'lRet = SetMenuItemBitmaps(sHandle, 3, MF_BYPOSITION, Img.ListImages(1), Img.ListImages(1))
    'lRet = SetMenuItemBitmaps(sHandle, 4, MF_BYPOSITION, Img.ListImages(1), 你的image和imagelist里面有图片吗
      

  2.   

    图片是有的,都是.ico的,行么?
      

  3.   

    你的代码调试过
    错:mHandle = GetMenu(hwnd)
    改:mHandle = GetMenu(Me.hwnd)
    还有就是顶级(1级)菜单好像没有办法设置图片
    2级就可以了!
      

  4.   

    那就要用 Owner-draw 了(比较难。不过例子特多,如 XP 菜单等基本上都是用了此技术),
    或者,SetMenuItemInfo 不知行不行。