首先,建立如下资源描述文件(*.rc),然后编译成RES文件,并加入项目文件。该资源文件中包括八个图标。
201 ICON "MOON01.ICO"
202 ICON "MOON02.ICO"
203 ICON "MOON03.ICO"
204 ICON "MOON04.ICO"
205 ICON "MOON05.ICO"
206 ICON "MOON06.ICO"
207 ICON "MOON07.ICO"
208 ICON "MOON08.ICO"
然后在窗体上加上一个Timer和Image,设置Timer的Enable属性为True,Interval属性为1000。在代码输入窗口加入如下的程序:
Option Explicit
Dim Which As Integer ''动画显示的图标号
Private Sub Form_Load()
Which = 201
End Sub
Private Sub Timer1_Timer()
Image1.Picture = LoadResPicture(Which, vbResIcon)
If Which = 208 Then
Which = 201 ''循环显示
Else
Which = Which + 1
End If
End Sub End Sub
该示例运行时连续显示图标资源以实现动画效果。
三、如何显示资源中的GIF文件
VB 5.0的Picture Box可以显示GIF和JPEG图象,但是由于GIF资源不是Windows的标准资源,所以不能使用LoadResPicture的办法来调入GIF图象。如果要解决这个问题,需要先将GIF资源写到一个临时文件,然后用LoadPicture显示文件,最后再删除掉磁盘上的临时文件。我们假定资源文件如下:
102 GIF about.gif
你可以用这样的语句来实现:
SaveFileFromRes(102, "GIF", "C:\about.gif")
Picture1.picture = LoadPicture("C:\about.gif")
Kill "C:\about.gif"
这里的C:\about.gif只是一个例子,在实际编程可以用Windows API的GetTempFileName来生成临时文件名(但GetTempFileName生成的临时文件扩展名为.tmp,需改为.gif)。这里的SaveFileFromRes函数来完成写临时文件的工作,具体代码如下:
Public Function SaveFileFromRes(vntResourceID As Variant, sType As String, sFileName As String) As Boolean
''=======================================================''
''函数:SaveFileFromRes 从http://www.china-askpro.com下载 ''
''=======================================================''
目的: 从资源文件调入自定义资源,然后写入磁盘上的文件 ''
''返回值: 如果没有错误为True,否则为False ''
''注意: sType 必须同资源文件的定义相同(包括大小写)! ''
'' 假定sFilename是合法的,可写的 ''
''=======================================================''
Dim bytImage() As Byte '' Always store binary data in byte arrays!
Dim iFileNum As Integer ''Free File Handle
On Error GoTo SaveFileFromRes_Err
SaveFileFromRes = True
''Load Binary Data from Resource file
bytImage = LoadResData(vntResourceID, sType)
''Get Free File Handle
iFileNum = FreeFile
''Open the file and save the data
Open sFileName For Binary As iFileNum
Put #iFileNum, , bytImage
Close iFileNum
Exit Function
SaveFileFromRes_Err:
SaveFileFromRes = False: Exit Function
End Function
这个方法不但适用于GIF文件,也适用于其它类型的文件。