RES资源问题

panxuejian 2003-10-22 09:19:03
VB资源文件RES都能加载哪些媒体文件,如图片、声音、视频。如何调用这些资源。
...全文
145 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
射天狼 2003-10-22
  • 打赏
  • 举报
回复
LoadResString 函数
===============

用以从资源 (.res) 文件装载字符串。.

语法

LoadResString(index)

LoadResString 函数的语法包含下列部分:

部分 描述
index 必需的。一个整数,它用来指定资源文件中数据的标识符 (ID) 。ID标识符为 1 的资源保留给应用程序图标。
说明

可以使用 LoadResString 函数代替代码中的字符串文字量。
将数据的长字符串存储在资源文件中并从该资源文件访问它们能改进装载时间,这是因为您可以根据需要从资源文件单独装载,而不是在装载窗体时一并全部装载。
LoadResString 的使用对于 Visual Basic 应用程序的本地化有好处,这是因为需要翻译的资源一个资源文件中被隔离,并且无须访问源代码或重新编译该应用程序。
射天狼 2003-10-22
  • 打赏
  • 举报
回复
LoadResPicture 函数
========

用以从资源 (.res) 文件装载位图、图标或光标。

语法

LoadResPicture(index, format)

LoadResPicture 函数的语法包含下列部分:

部分 描述
index 必需的。一个整数或字符串,它用来指定资源文件中数据的标识符 (ID) 。ID标识符为 1 的资源保留给应用程序的图标。
format 必需的。一个数值或常数,按照下列设置中的描述,指定返回数据的格式。
设置

用于 format 的设置有:

常数 数值 描述
vbResBitmap 位图 0 位图资源
vbResIcon 图标 1 图标资源
vbResCursor 2 光标资源
说明

可以使用 LoadResPicture 函数代替对存储在 Form 或控件的 Picture 属性中的图形的引用。
将位图、 图标或光标存储在资源文件中并从该资源文件对它们进行访问能改进装载时间,这是因为可以根据需要从资源文件单独装载,而不是在装载 Form 时一并全部装载。
LoadResPicture 的使用对于 Visual Basic 应用程序的本地化有好处,这是因为需要翻译的资源在一个资源文件中被隔离,并且无须访问源代码或重新编译该应用程序。
射天狼 2003-10-22
  • 打赏
  • 举报
回复
LoadResData 函数
=====================
用以从资源 (.res) 文件装载若干可能类型的数据,并返回一个 Byte 数组。

语法

LoadResData(index, format)

LoadResData 函数的语法包含下列部分:

部分 描述
index 必需的。一个整数或字符串,它用来指定资源文件中数据的标识符 (ID)。ID 标识符为 1 的资源保留给应用程序的图标。
Format 必需的。一个数值,它用来按照下列设置中的描述,指定返回数据的原始格式。该数值也可以是用户定义资源的字符串名。
设置

用于 format 的设置有:

设置 描述
1 光标资源
2 位图资源
3 图标资源
4 菜单资源
5 对话框
6 字符串资源
7 字体目录资源
8 字体资源
9 加速器表
10 用户定义资源
12 群组光标
14 群组图标
说明

LoadResData 从资源文件装载的数据可以达到 64K。
对位图、图标、光标资源类型使用 LoadResData 将返回包含该资源中的实际二进制位的字符串。如果想使用实际的位图、图标或资源,请使用 LoadResPicture
函数.
LoadResData 的使用对于 Visual Basic 应用程序本地化有好处,这是因为需要翻译的资源在一个资源文件中被隔离,并且无须访问源代码或重新编译该应用程序。
abc10 2003-10-22
  • 打赏
  • 举报
回复
' 将资源文件中的文件导出到硬盘
' ID 为资源文件中的文件标识号, FileName 为文件导出到硬盘后的存放路径及文件名
Function ExportFileFromRes(ByVal ID As Long, ByVal FileName As String) As Boolean
ExportFileFromRes = False
Dim bytDbt() As Byte
Dim intT As Integer
If Dir(FileName) <> "" Then
ExportFileFromRes = False
Exit Function
End If
bytDbt = LoadResData(ID, "CUSTOM")
intT = FreeFile
Open FileName For Binary As intT
Put intT, , bytDbt
Close intT
ExportFileFromRes = True
End Function
abc10 2003-10-22
  • 打赏
  • 举报
回复
LoadResString 函数

用以从资源 (.res) 文件装载字符串。
语法
LoadResString(index)
LoadResString 函数的语法包含下列部分:
部分 描述
index 必需的。一个整数,它用来指定资源文件中数据的标识符 (ID) 。ID标识符为 1 的资源保留给应用程序图标。

例如:
Text1.Text = LoadResString(101)'调用


LoadResPicture 函数


用以从资源 (.res) 文件装载位图、图标或光标。

语法

LoadResPicture(index, format)

LoadResPicture 函数的语法包含下列部分:

部分 描述
index 必需的。一个整数或字符串,它用来指定资源文件中数据的标识符 (ID) 。ID标识符为 1 的资源保留给应用程序的图标。
format 必需的。一个数值或常数,如下列“设置值”中所描述的,指定返回数据的格式。


设置值
用于 format 的设置值有:
常数 值 描述
vbResBitmap 位图 0 位图资源
vbResIcon 图标 1 图标资源
vbResCursor 2 光标资源

例如:Image1.Picture = LoadResPicture(101, 0)



TechnoFantasy 2003-10-22
  • 打赏
  • 举报
回复
VB编程的好帮手--资源文件
各位VB高手,你一定也常常因苦于无法组织自己程序中大量的picture,而头痛不已,那就让小生为各位介绍一下VB编程的好帮手--资源文件。
所谓资源文件,就是指将在程序运行时用到的资源集中在一起的一个文件。一个资源文件可以包括文字(TEXT)、位图(BITMAP)。图标(ICON)等。并且在程序中调用时不用指明路径,这就简化了程序的编写并减少了发生错误的可能。现在我就以一个小程序为例讲述资源文件的一些使用方法。
这个工程运行后,当点击【未来】按钮时中间图像将依次变换为夏、秋、冬、春……点击【从前】按钮则以相反顺序转动图片(源程序附后)。
首先建立春、夏、秋、冬四幅位图,均以.BMP格式保存在C:\TEST\下。然后打开记事本编写资源文件,
内容如下:
100 bitmap spring.bmp
200 bitmap summer.bmp
300 bitmap autumn.bmp
400 bitmap winter.bmp
其中数字表示此项的ID号码,此号码很重要,它直接影响调用!BITMAP表示以位图方式保存而最后的部分为文件名。将此文件保存为TEST.RC。
接下来编译此资源文件。在C:\Visual Basic\Wizards目录下找到RC.EXE文件。在MS-DOS方式下键人C:\rc /r c:\test.test.rc(键入rc /?将会得到帮助),在编译成功后在C:\TEST\中将发现增加了一个名为TEST.RES的文件。
完成了上面的工作,接下来就可以编写工程了。首先建立一个image控件img和两个Command控件cmdc、cmdw。然后建立一个时钟控件,设其Interval属性为1000。最后在[通用]中声明一个名为iid的整形变量:
Dim iid As Integer
并初始化img和iid:
img.Picture=LoadResPicture(100,vbResBitmap)
iid=100
其中LoadResPicture(id,model)为从资源文件中调用图像的函数,100表示ID号为100的项,vbResBitmap为一常量,值为0,表示以位图方式打开。然后在两个Command控件中加入源程序代码。
最后在工程资源管理器中用鼠标右键单击选择【添加】-->【添加文件】,加入TEST.RES。
至此工程可谓大功告成,按F5运行一下,希望你会喜欢。还有一点要强调的是一个工程只能有一个工程文件!附源程序:
Option Explicit
Dim iid As Integer
Private Sub comc_Click()
iid = iid - 100
If iid < 100 Then iid = 400
img.Picture = LoadRespicture(iid.vbResBitmap)
End If
End Sub
Private Sub comw_Click()
iid = 100 + iid
If iid > 400 Then iid = 100
img.Picture = LoadResPicture(iid,vbResBitmap)
End If
End Sub
Private Sub Form_Load()
img.Picture = LoadResPicture(10O,vbResBitmap)
iid = 100
End Sub
Private Sub Timer1_Timer()
iid = 100 + iid
If iid > 400 Then iid = 100
img.Picture = LoadResPicture(iid,vbResBitmap)
End If
End Sub
TechnoFantasy 2003-10-22
  • 打赏
  • 举报
回复
Visual Basic中使用资源的技巧
李海
本文发表在99年6月28日 《计算机世界》24期


《计算机世界》1999年4月5日发表的文章《在VB应用程序中巧用DLL》,这篇文章介绍了如何在VB利用Windows API中调用DLL中的多媒体资源。这是一个非常不错的方法,不过在VB 4.0以上的版本都直接支持资源文件,在很多情况下比借助API的方法更为方便:


VB支持将资源文件*.res加入工程文件,最终编译进VB的EXE文件,而无需额外的资源DLL。
VB提供了调用这些资源的语句,如LoadResPicture,而无须使用LoadResource等API函数来获得资源。
读入的图形资源和使用LoadPicture读入的图象一样使用,省去了调用BitBlt等API函数的麻烦。这些图象资源也可以直接赋给与图象有关的属性,如Picture属性,而这是采用API方法比较难实现的。
一、如何制作资源文件

VB所支持的资源文件必须以.res为扩展名,否则VB将无法正确识别。只要在项目文件中加入.res文件,就可以在程序中调用.res文件中的资源了。在生成EXE文件时,.res文件所包含的资源也会自动包含于其中。需要注意的是16位版本和32版本使用的资源文件是不同的,不能混用。

制作.res文件,一种方法是使用VC++、Delphi等软件的资源编辑工具,它们可以直接编辑.res文件。不使用C++或其它工具的VB用户也可以采用另一种办法:先建立脚本文件.rc,然后用rc.exe编译成.res。VB 5.0以上的用户可以在Wizard子目录中找到rc.exe(如果使用VB4,可以在VB4的光盘上找到这个工具)。对于新手来说,手工建立.rc文件可能有些麻烦,可以考虑使用ResEdit。ResEdit这个资源编辑器并不包括在VB中,而应该从微软的站点上下载,地址是:http://premium.microsoft.com/vbasic/updates/ResEdit.asp。请注意,如果你以前没有访问过http://premium.microsoft.com/vbasic/,你需要先免费注册,注册过程中要输入VB的序列号(就是VB的About对话框中显示的那个序列号)。下载后,安装这个工具,你就可以在“外接程序管理器”找到它了。这个工具功能不是很强,但比手工编辑.rc文件简单多了。

二、在VB中调用资源

VB为支持.res资源增加了三个函数:LoadResPicture()、LoadResString()和LoadResData()。

LoadResPicture()函数用于调入位图、图标和光标资源,其作用非常类似LoadPicture()函数,不过LoadPicture是从磁盘文件中读取图形。LoadResPicture的格式为:

LoadResPicture(资源ID号,资源类型)

资源类型可为vbResBitmap、vbResIcon、vbResCursor,分别对应着位图、图标和光标三种资源。得到的图形可以直接赋与Picture属性,或在使用PaintPicture方法时使用。

LoadResString()函数用于调入字符串资源。字符串资源对于开发多语种软件比较有用。其使用格式为:

LoadResString(资源ID号)

LoadResData()函数可以调入各种资源。使用格式为:

LoadResData(资源ID号,资源类型)

这里资源类型取值的含义如下表所示:

1
光标
2
位图
3
图标

4
菜单
5
对话框
6
字符串

7
字体目录
8
字体
9
加速键

10
用户定义资源
12
设备无关光标
14
设备无关图标


该函数以Byte数组形式返回指定资源。VB以设计窗体快捷为其特色,故一般很少使用菜单、对话框和加速键资源。在VB中一般不使用资源文件的办法来设置EXE文件的版本信息,而应该在项目选项对话框中设置版本信息。LoadResData()函数最主要是用于用户定义资源。用户定义资源可以是GIF文件、文本文件或其他有用的数据,其使用起来相当灵活,在后面 “如何显示资源中的GIF文件”部分我们将展示这一点。

下面,我们先给出一个完整的示例来展现如何进行资源文件的编程。

首先,建立如下资源描述文件(*.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://AskPro.yeah.net下载 '

'======================================================='

目的: 从资源文件调入自定义资源,然后写入磁盘上的文件 '

'返回值: 如果没有错误为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文件,也适用于其它类型的文件。
golden24kcn 2003-10-22
  • 打赏
  • 举报
回复
除了你所说的还有文本

LoadResData 函数 加载一个byte数组(音视文件可以用这个)
LoadResPicture 加载一个图片或图标
LoadResString 加载一个字符串
abc10 2003-10-22
  • 打赏
  • 举报
回复
Visual Basic 提供了三个函数从资源文件中检索数据以供在代码中使用。

函数 描述
LoadResString 返回一个文本字符串。
LoadResPicture 返回一个 Picture 对象,例如位图、图标或光标。
LoadResData 返回一个 Byte 数组,用于象 .wav 之类的文件。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧