我搜索了帖子,好象只有一个主题在说这个,有朋友说在MSDN有解决方法,可我去MSDN看了好几天也没找到……所以再贴出来问问大家。
  我的ICON文件包含两个图标(一个32×32×256、一个48×48×256),我想显示出第二个图标来,可我弄不好……

解决方案 »

  1.   

    Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long
    Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
    Private Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long
    Dim icon_n As Long
    Dim icon_filename As String
    Dim hmodule As LongPrivate Sub Command1_Click()
        icon_filename = "f:\22.ico"
        Picture1.Cls
        hmodule = GetModuleHandle(icon_filename) 
        icon_n = ExtractIcon(hmodule, icon_filename, 1) 显示第二个图标,如果后面的参数是0,就显示第一个图标,以此类推
        DrawIcon Picture1.hdc, 0, 0, icon_n  
    End Sub
      

  2.   

    TO:tztz520(午夜逛街)
      恩,这个方法好象不行。可能是我没说清楚……我说的ICO文件包含两个图标,是指同一图标的两种格式(分别是32×32×256和48×48×256);用ExtractIcon函数检查我这个ICON文件只有一个图标。我想问的就是这种同一图标的不同格式的调用方法。而ExtractIcon函数好象更适合取EXE、DLL里的不同图标。