比如frmMain上有一cmdTest,现欲指定cmdTest.Picture为E:\A.exe的图标,如何实现?
谢谢!

解决方案 »

  1.   

    图标分离,再加载到command上
      

  2.   

    可是可是,不过这样你还会麻烦一些。
    有个apI可以提取exe的icon。
    提取出来后,你放到picture控件中。然后就可以设置了。
    我在VC在试过,在VB中没有试过。你可以去找一些图标提取的例子看看就可以了。
    呵呵,有时间我给你找一找。
      

  3.   

    Private Declare Function ExtractIcon Lib "Shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long
    Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long用这两个提取后放到图片中
      

  4.   

    给你写了个例子
    Private Declare Function ExtractIcon Lib "Shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long
    Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long
    Dim lcount As Integer
    Dim lnum As Integer
    Private Sub Command1_Click()
     lnum = lnum + 1
     X1 = ExtractIcon(App.hInstance, astr, lnum)
     Form1.Refresh
     X2 = DrawIcon(Form1.hdc, 0, 0, X1)
     Command2.Enabled = True
     If lnum > lcount Then
       Command1.Enabled = False
     End If
    End Sub
    Private Sub Command2_Click()
     lnum = lnum - 1
     X1 = ExtractIcon(App.hInstance, astr, lnum)
     Form1.Refresh
     X2 = DrawIcon(Picture1.hdc, 0, 0, X1)
     Command1.Enabled = True
     If lnum = 0 Then
       Command1.Enabled = False
     End If
    End Sub
    Private Sub Form_Load()
     Form1.AutoRedraw = True
     CommonDialog1.ShowOpen
     astr = CommonDialog1.FileName
     lnum = -1
     Form1.Caption = astr
     Command2.Enabled = False
     Command1.Enabled = True
     lcount = ExtractIcon(App.hInstance, astr, lnum)
     lnum = 0
     If lcount > 0 Then
      Form1.Refresh
      X1 = ExtractIcon(App.hInstance, astr, 0)
      X2 = DrawIcon(Picture1.hdc, 0, 0, X1)
     Else
      MsgBox ("file has no icon resource.")
      Command2.Enabled = False
      Command1.Enabled = False
    End If
    End Sub