先把icon画到picture上面去,再付给command控件Call DrawIcon(Picture1.hdc, 0, 0, handle)
If handle <> 0 Then
DestroyIcon (handle)
handle = 0
End If

解决方案 »

  1.   

    同意楼上,我一向如此,但用DrawIconEx更好些,可以控制图标大小
    Public Declare Function DrawIconEx Lib "user32" (ByVal hdc As Long, ByVal xLeft As Long, ByVal yTop As Long, ByVal hicon As Long, ByVal cxWidth As Long, ByVal cyWidth As Long, ByVal istepIfAniCur As Long, ByVal hbrFlickerFreeDraw As Long, ByVal diFlags As Long) As LongDrawIconEx Picture1.HDC,0,0,hicon,32,32,0,0,&H3
    然后Command1.Picture=Picture1.Image 
      

  2.   

    '将图标句柄转为图标对象。Private Declare Sub OleCreatePictureIndirect Lib "olepro32.dll" ( _
        lpPictDesc As PictDesc, _
        riid As IID, _
        ByVal fPictureOwnsHandle As Long, _
        ipic As IPicture)
        
    Private Type IID
         Data1 As Long
         Data2 As Integer
         Data3 As Integer
         Data4(0 To 7) As Byte
    End TypePrivate Type PictDesc
        cbSizeofStruct As Long
        picType As Long
        hgdiobj As Long
        hPalOrXYExt As Long
    End Type
    Public Function IconToPicture(ByVal hIcon As Long) As IPicture
        Dim ipic As IPicture
        Dim picdes As PictDesc, iidIPicture As IID    If hIcon = 0 Then Exit Function
        picdes.cbSizeofStruct = Len(picdes)
        picdes.picType = 3
        picdes.hgdiobj = hIcon
        ' Fill in magic IPicture GUID {7BF80980-BF32-101A-8BBB-00AA00300CAB}
        iidIPicture.Data1 = &H7BF80980
        iidIPicture.Data2 = &HBF32
        iidIPicture.Data3 = &H101A
        iidIPicture.Data4(0) = &H8B
        iidIPicture.Data4(1) = &HBB
        iidIPicture.Data4(2) = &H0
        iidIPicture.Data4(3) = &HAA
        iidIPicture.Data4(4) = &H0
        iidIPicture.Data4(5) = &H30
        iidIPicture.Data4(6) = &HC
        iidIPicture.Data4(7) = &HAB
      
        OleCreatePictureIndirect picdes, iidIPicture, True, ipic
     
        Set IconToPicture = ipic
        Set ipic = Nothing
    End Function