我想获取文件的图标然后显示出来,我用ExtractIcon获取只能获取到32×32大小的图标,要怎样才能获取到48×48大小的图标呢?谢谢!
这是我的代码:
1个 CommonDialog,1个按钮,1个Picture。
Private Sub Command1_Click()Dim total As LongDim p(50) As LongDim i As IntegerMe.Picture1.ClsMe.CommonDialog1.Filter = "图标|*.Exe;*.Ico;*.Dll"Me.CommonDialog1.ShowOpenIf Dir(Me.CommonDialog1.FileName) <> "" ThenIf ExtractIcon(App.hInstance, Me.CommonDialog1.FileName, -1) = 0 Then '如果没有图标MsgBox "No Icon!"Elsetotal = ExtractIcon(App.hInstance, Me.CommonDialog1.FileName, -1)
'取得总图标数For i = 0 To total - 1p(i) = ExtractIcon(App.hInstance, Me.CommonDialog1.FileName, i) '读取每个图标Next iFor i = 0 To total - 1 '依次显示每个图标DrawIcon Picture1.hdc, 34 * i, 0, p(0)Next iEnd IfEnd IfEnd Sub

解决方案 »

  1.   

    求解!!!貌似Privateextracticons这个函数可以但不知道怎么用,网上也搜不到!!各位帮帮忙谢谢
      

  2.   


    Private Declare Function PrivateExtractIcons Lib "user32" _
        Alias "PrivateExtractIconsA" (ByVal sFile As String, ByVal nIconIndex As Long, _
        ByVal cxIcon As Long, ByVal cyIcon As Long, ByVal phicon As Long, piconid As Long, _
        ByVal nIcons As Long, ByVal flags As Long) As Long
        
    Private Const LR_DEFAULTCOLOR = &H0&Private Sub Form_Load()
    Dim lret As Long
    Dim phicon As Long
    Dim picon As Longlret = PrivateExtractIcons("xxx.exe", 0, 32, 32, VarPtr(phicon), picon, 1, LR_DEFAULTCOLOR)
    End Sub
      

  3.   

     VarPtr(phicon)
    picon
    LR_DEFAULTCOLOR
    这三个参数是什么?
    如果用DrawIconEx显示这样写对吗?
    DrawIconEx Picture1.hdc, 0, 0, lret, 48, 48, 0, 0, 3
      

  4.   

    回4楼
    VarPtr(phicon)
    picon
    LR_DEFAULTCOLOR
    这三个参数是什么?
    如果用DrawIconEx显示这样写对吗?
    DrawIconEx Picture1.hdc, 0, 0, lret, 48, 48, 0, 0, 3
    谢谢
      

  5.   

    VarPtr(phicon)传进去一个文件中icon资源数组头指针,如果取一个,就像上面那样传,返回的是icon资源HICON类型指针,类似于loadicon返回值;
    picon是返回的提取数量;
    LR_DEFAULTCOLOR是提取相关的标志;没有考虑之后的提取过程,给个PrivateExtractIcons函数的英文说明地址:
    http://msdn.microsoft.com/en-us/ms648075(VS.85).aspx
    以供参考。提取代码我想参考extracticon函数提取过程基本没问题。