如何在菜单子菜单前加上图标????????

解决方案 »

  1.   

    找到一个书上的小程序给你参考一下.
    用到API函数.
    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 GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
    Private Declare Function ModifyMenu Lib "user32" Alias "ModifyMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpString As Any) As Long
    Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
    Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
    Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
    Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
    Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As LongConst SRCCOPY = &HCC0020
    Const MF_BITMAP = &H4&
    Const MF_BYPOSITION = &H400&Private Sub Form_Load()
        Dim nLoopCtr As Integer
        Dim lResult As Long
        Dim hTempDC As Long
        Dim nWidth As Long
        Dim nHeight As Long
        Dim lTempID As Long
        Dim hMenuID As Long
        Dim lItemCount As Long
        Dim hBitmap As Long
        
        
        nWidth = Pic.Width \ Screen.TwipsPerPixelX
        nHeight = Pic.Height \ Screen.TwipsPerPixelY
        hMenuID = GetSubMenu(GetMenu(Me.hwnd), 0)
        hTempDC = CreateCompatibleDC(Pic.hdc)
        For i = 0 To 1
            hBitmap = CreateCompatibleBitmap(Pic.hdc, nWidth, nHeight)
            lTempID = SelectObject(hTempDC, hBitmap)
            lResult = BitBlt(hTempDC, 0, 0, nWidth, nHeight, Pic.hdc, 0, 0, SRCCOPY)
            lTempID = SelectObject(hTempDC, lTempID)
            M_Item1(i).Caption = ""
            lResult = ModifyMenu(hMenuID, i, MF_BYPOSITION Or MF_BITMAP, GetMenuItemID(hMenuID, i), hBitmap)
        Next i
        lResult = DeleteDC(hTempDC)
    End Sub
      

  2.   

    兄弟,能不能不用api
    ------------------
    那就用控件吧
    smartxpmenu
      

  3.   

    http://ygyuan.yeah.net/
    免费控件下载.使用也简单,无须一行代码.