Windows图标-Icon文件格式分析。[5]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

'CreateIconFromResource 函数通过ICON图像资源位描述信息创建一个图标或光标,presbits:图像资源起始点指针,dwResSize:图像数据尺寸,fIcon:TRUE为图标、FALSE将创建一个光标,dwVer:指定创建的图标的版本号(Windows 2.x =&H20000、Windows 3.x =&H30000 ,在WIN32程序中使用的都是Windows 3.x格式)。失败返回NULL,成功则返回创建的图标的句柄(handle )。
Declare Function CreateIconFromResource Lib "user32"  (presbits As Byte, ByVal dwResSize As Long, ByVal fIcon As Long, ByVal dwVer As Long) As Long

'GetIconInfo 函数取得与图标有关的信息。返回非零表示成功,零表示失败。函数返回时,由ICONINFO结构载入的位图必须由应用程序删去。hIcon 为由CreateIconFromResource 函数创建的图标的句柄即:CreateIconFromResource 函数的返回值。
Declare Function GetIconInfo Lib "user32" (ByVal hIcon As Long, piconinfo As ICONINFO) As Long

' CreateIconIndirect 函数通过GetIconInfo函数取得的ICONINFO(图标信息)创建一个图标,执行成功返回图标的句柄,零表示失败。
Declare Function CreateIconIndirect Lib "user32" (piconinfo As ICONINFO) As Long

'DrawIcon 函数在指定设备的指定位置画一个图标。返回非零表示成功,零表示失败。hdc:设备关联句柄,x/y:绘制图像的起点位置,hIcon:图标的句柄。
Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal hIcon As Long) As Long

'DestroyIcon 函数清除创建的图标以释放其占用的内存。返回非零表示成功,零表示失败。hIcon:图标的句柄。
Declare Function DestroyIcon Lib "user32" (ByVal hIcon As Long) As Long

通过上面的函数说明可见,我们可以单单使用图像信息来创建一个图标,即上面的iconimage结构。下面是以32×32象素,16色单资源图标文件为例的例子:
Dim tmphIcon As Long
Dim IconShow() As Byte
Private Sub Command4_Click()
        Dim lTemp As Long
        Dim lSize As Long       
        Dim freefn As Integer       
        ReDim IconShow(743)  '等同于前面第3节中定义的iconimage结构。
    freefn = FreeFile
    Open App.Path + "\11.ico" For Binary As #freefn
        Seek #freefn, 23
        Get #freefn, , IconShow
    Close #freefn
    '---------------------------直接加载图标。
        lTemp = DestroyIcon(tmphIcon)
        Picture3.Cls
        lSize = 744
        lTemp = CreateIconFromResource(IconShow(0), lSize, 1, &H30000)
        DrawIcon Picture3.hdc, 0, 0, lTemp
        Picture3.Refresh
        tmphIcon = lTemp
End Sub
以上代码只是取到抛砖引玉的作用,并不表明任何其他意图。同样,使用CreateIconIndirect 函数创建的图标也可以直接用DrawIcon 函数函数显示。

本文关键:Windows图标-Icon文件格式分析。
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top