找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 5161|回复: 1

【分享】资源文件制作方法及调用步骤

[复制链接]

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 2009-1-2 12:12:57 | 显示全部楼层 |阅读模式
VB中资源文件的使用方法<br/><br/>  在几乎所有的Windows应用程序中都拥有资源文件,这些文件定义使用应用程序将要显示很多的用户界面元素,以及提供程序所需要的各种类型数据的存储场所。资源文件在VC应用程序中应用十分广泛,在VB应用中却很少提及它。其实在开发VB应用程序时,一样可以将要用到的字符串、位图、图标和其它类型的数据等做成一个资源文件。因为这样做至少有以下几个优点:(1)提高性能减少内存空间的占用,这是因为字符串、位图、图标和数据可以不必在程序启动或调用窗体时就全部加载,而是根据需要随时从资源文件中加载。(2)将所需要的资源文件中单独存放在一个资源文件中,使用移植程序和更改一些界面显示变得十分简单,不必访问程序的源代码。<br/>  下面就和大家具体谈谈如何在VB中建立和使用资源文件。<br/>  首先,我们先了解一下windows应用程序中一般经常使用的资源:<br/>  位图:位图是用于创建应用程序用户界面的图像。例如,用户可以为工具栏按钮创建一套位图,也可以创建在其它窗口上显示的位图。一般来说,都是在图像编辑器中创建位图,然后再将该位图添加到资源文件中。<br/>  图标:图标是类似于位图的小图像,然而,虽然位图可以具有任意大小的尺寸,但是图标却小得多,通常为16*16像素或32*32像素。图标使用的很多方法与位图一样。然而,图标通常被用作代表最小化应用程序的图象、代表应用程序文档类型的图像和其它类型的应用系统。<br/>  字符串表:就是指文本串的一个表格,通常来说字符串用来显示菜单命令的提示、对话框中和消息框中显示的信息。要访问串表格中的文本串,需引用串的ID,它与定义表格的源文件中的串相联系。<br/>  光标:光标是代表鼠标在屏幕上的位置的图像。尽管windows 系统定义和许多类型的光标,但用户也可以创建自己需要的光标。<br/>  定制资源:定制资源是用户想存储在其应用程序资源文件中的任何类型的数据。这些数据可以是文本文件或二进制文件,用户可以用任何喜欢的方式定制资源。资源文件只是作为存储区域。创建了定制资源,可以避免必须从磁盘文件中加载数据,因为数据随资源文件一起加载。<br/>  对话框:对话框的资源定义包括样式标志(控制对话框外观及行为的值)以及对话框中含控件的大小和位置。<br/>  菜单栏:用户应用程序的菜单栏也可以在资源文件中定义。可以在资源文件中指定命令和命令的ID,以用命令在菜单中的位置。<br/>  加速器:加速器也称为热键。它们是用户快速选取命令时所按下的键,使用热键时,不必在应用程序的菜单中寻找命令。加速器在一个表格中定义,这个表将按键与命令资源的ID联系起来。<br/>  那么在VB开发环境中如何使用这些资源呢?<br/>  1、添加资源文件编辑器,<br/>   启动VB6.0的IDE集成环境,新建一个工种。点选菜单“外接程序”下的“外接程序管理器”,在弹出的对话框的列表框中选择“VB 6资源编辑器”,选择加载并单击“确定“后退出对话框。这样在“工具”菜单栏中就有一项“vb资源编程器”了。打开这个工具就可以进行资源文件的编辑了。<br/>  2、编辑资源文件<br/>  在资源编辑器中编辑资源文件非常简单。它可是编辑我们在上面先提到的位图、图标、光标、字符串及定制资源五种类型的资源,如图1所示:<br/>  在进行编辑时,点击相应的图标就可以添加资源了。<br/>  编辑资源的方法也很容易,以添加图片为例看一看添加位图的方法:点击添加位图按钮,在弹出的对话框中选择一个位图文件,单击“OK”后,位图的添加就完成了,在这里要注意属性按钮,点击它以后,可以选择请语言版本并输入资源的ID号,这个ID号是标识一类资源的唯一编号,必须记住资源的ID号,以使在应用程序中调用。编辑好资源后,关闭资源编辑器,资文件自动加入新建的工种内。另外,也必须将资源文件保存。其它资源的编辑方法也大体上一样。<br/>  3、使用资源文件,在应用程序中调用资源文件与直接使用资源基本上是一致的。对了,在一个工种中只能保存一个资源文件,在使用资源文件之前,请必须保证资源已经加入到资源文件中了。<br/>  调用资源文件中资源的函数有:<br/>  LoadResString 返回一个文本字符串。语法:LoadResString(index) index必需是一个整数,它用来指定资源文件中数据的标识符(即经常提到的ID号),如果ID号为1的资源保留给应用程序图标。<br/>  LoadResPicture 用以从资源 (.res) 文件装载位图、图标或光标。它的语法:<br/>  LoadResPicture(index, format)<br/>  LoadResPicture 函数的语法包含下列部分:<br/>  参数 描述<br/>  index 一个整数或字符串,它用来指定资源文件中数据的标识<br/>   符 (ID) 。ID标识符为 1 的资源保留给应用程序的图标。<br/>  format 必需的。一个数值或常数,如下列“设值"中所描述的,<br/>   指定返回数据的格式。<br/>  用于 format 的设置值有:<br/>   常数 值 描述<br/>  vbResBitmap 位数 0 位图资源<br/>  vbResIcon 图标 1 图标资源<br/>  vbResCursor 2 光标资源<br/>  说明:可以使用 LoadResPicture 函数代替对存储在 Form 或控件的 Picture 属性中的图形的引用。<br/>  LoadResData 返回一个Byte数组,用以从资源 (.res) 文件装载若干可能类型的数据。语法为:<br/>  LoadResData(index, format)<br/>  LoadResData 函数的语法包含下列部分:<br/>  部分 描述<br/>  index 必需的。一个整数或字符串,它用来指定资源文件中数据的标识<br/>   符 (ID)。ID 标识为 1 的资源保留给应用程序的图标。<br/>  Format 必需的。一个数值,它用来按照下列“设置值"中的描述,指定返<br/>   回数据的原始格式。该数值也可以是用户定义资源的字符串名。<br/>  设置值 用于 format 的设置值有:<br/>   设置值 描述<br/>  1 光标资源<br/>  2 位图资源<br/>  3 图标资源<br/>  4 菜单资源<br/>  5 对话框<br/>  6 字符串资源<br/>  7 字体目录资源<br/>  8 字体资源<br/>  9 加速键表<br/>  10 用户定义资源<br/>  12 群组光标<br/>  14 群组图标<br/>  说明:LoadResData 从资源文件装载的数据可以达到 64K。<br/>  最后我们用一个简单的例子来说明这几个函数的用法:<br/>  (1)建立一个窗体,在窗体上放置三个按钮,一个图片框用来显示图片、图标。其属性如图2所示。<br/>  按照前面讲述的方法添加资源文件编辑器并建立工程文件,里面包含一个字符串,位图、图标、光标和一个自定义的资源。<br/>  程序代码如下所示:<br/>  Private Sub cmdLoadData_Click()<br/>  Dim tt As Byte<br/>  End Sub<br/>  Private Sub cmdLoadPicture_Click()<br/>  picTest.Picture = LoadResPicture(101, 1)<br/>  '如何为0表示位图,为2表示光标<br/>  End Sub<br/>  Private Sub cmdLoadstring_Click()<br/>  Dim str As String<br/>  str = LoadResString(101)<br/>  MsgBox str<br/>  End Sub<br/>
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

 楼主| 发表于 2009-1-2 12:14:25 | 显示全部楼层
<span class="bold">下面详细说明资源文件的使用方法</span><br/><br/>
<div style="FONT-SIZE: 12px">LoadResData 返回一个Byte数组,用以从资源 (.res) 文件装载若干可能类型的数据。语法为: <br/>  LoadResData(index, format) <br/>  LoadResData 函数的语法包含下列部分: <br/>  部分 描述 <br/>  index 必需的。一个整数或字符串,它用来指定资源文件中数据的标识 <br/>   符 (ID)。ID 标识为 1 的资源保留给应用程序的图标。 <br/>  Format 必需的。一个数值,它用来按照下列“设置值"中的描述,指定返 <br/>   回数据的原始格式。该数值也可以是用户定义资源的字符串名。 <br/>  设置值 用于 format 的设置值有: <br/>   设置值 描述 <br/>  1 光标资源 <br/>  2 位图资源 <br/>  3 图标资源 <br/>  4 菜单资源 <br/>  5 对话框 <br/>  6 字符串资源 <br/>  7 字体目录资源 <br/>  8 字体资源 <br/>  9 加速键表 <br/>  10 用户定义资源 <br/>  12 群组光标 <br/>  14 群组图标 <br/><br/>VB 中资源文件的使用技巧<br/>一、开发中英(简、繁)双版本<br/>  现在比较流行的软件都会有中文版、英文版、繁体版等等多个版本,并可以根据系统的语言自动显示相适应的版本,那么这个功能在 VB 是如何实现得呢的:<br/>1、 首先通过 API 函数GetSystemDefaultLCID 判断系统的语言<br/>Option Explicit<br/>Dim lang As String<br/>Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long<br/>Private Sub Form_Load()<br/>Dim LocaleID As Long<br/>LocaleID = GetSystemDefaultLCID<br/>Select Case LocaleID<br/>Case &amp;H404<br/>MsgBox "当前系统为:中文繁体", , "语言"<br/>Case &amp;H804<br/>MsgBox "当前系统为:中文简体", , "语言"<br/>lang = "1"<br/>Case &amp;H409<br/>MsgBox "当前系统为:英文", , "语言"<br/>lang = "2"<br/>End Select<br/>End Sub<br/><br/>2、然后程序就可以加载保存在资源文件(这里我们就是使用的这种方法)、注册表、INI 文件、文本文件或其他文件中的各类字符串,以达到达到实现多种语言的目的。<br/>  ⑴启动 VB6.0,在“外接程序→外接程序管理器”中加载“Visual Basic 6 资源编辑器”<br/>  ⑵在 VB 资源编辑器窗口中,点击“编辑字符串表格”输入如下资料:<br/>  标识号 中文(中国)<br/>  101 例子<br/>  102 中文<br/>  103 英文<br/>  201 Ensample<br/>  202 Chinese<br/>  203 English<br/>  ⑶保存资源文件,写如下代码:(自定义装载字符的函数 LoadString)<br/>Sub LoadString()<br/>Me.Caption = LoadResString(Int(lang &amp; "01"))<br/>Command1(0).Caption = LoadResString(Int(lang &amp; "02"))<br/>Command1(1).Caption = LoadResString(Int(lang &amp; "03"))<br/>End Sub<br/><br/>  ⑷怎么样一个简单的中英双版本的程序就做出来了,如果把 lang 的值设置为 1,则显示中文,如果把 lang 的值设置为 2,则显示英文。<br/>ps:更简单实用的方法是:把不同语言文字放在同一个标识号ID对应的不同字符串表格中即可。VB 会自动实现多种语言转换!<br/><br/>二、 直接播放EXE文件中的声音文件<br/>  使用资源文件,可以直接在在EXE文件中播放声音文件(WAV文件),使程序显得更加专业。<br/>  ⑴启动 VB6.0,在“外接程序→外接程序管理器”中加载“Visual Basic 6 资源编辑器”<br/>  ⑵在 VB 资源编辑器窗口中,点击“添加自定义资料”,增加任意的 WAV 文件,再双击刚刚创建的自定义资源,弹出”编辑属性”窗口,定义如下:<br/>  类型: "WAVE"<br/>  标识号: 102<br/>  语言: 中文(中国)<br/>  ⑶保存资源文件,写如下代码:<br/>Option Explicit<br/>Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long<br/>Private Declare Function sndPlaySoundFromMemory Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long<br/>Public Const SND_ASYNC = &amp;H1&amp;<br/>Public Const SND_MEMORY = &amp;H4&amp;<br/>Private Sub Command5_Click() 注释:播放 WAV 文件<br/>Dim bArr() As Byte<br/>bArr = LoadResData(102, "WAVE")<br/>sndPlaySoundFromMemory bArr(0), SND_ASYNC Or SND_MEMORY<br/>End Sub<br/><br/>  ⑷按 F5 运行本程序,点击 Command 按钮,就可以听到你选定的 WAV 文件的声音了。<br/>三、 直接调用各类图标、光标图片<br/>  在一个程序中,我们可能需要调用多个图标、光标、图片文件,一般来说我们主要是使用 ImageList 控件,不过其时使用资源文件是最好的方法(可以少使用一个控件呀)。<br/>  ⑴启动 VB6.0,在“外接程序→外接程序管理器”中加载“Visual Basic 6 资源编辑器”<br/>  ⑵在 VB 资源编辑器窗口中,点击“添加光标”,“添加图标”,“添加位图”,装载所需要的文件。<br/>  ⑶程序代码如下:<br/>Me.Icon = LoadResPicture(101, vbResIcon) 注释:加载图标<br/>Picture1.Picture = LoadResPicture(101, vbResBitmap) 注释:加载位图<br/>Command1.MouseIcon = LoadResPicture(101, vbResCursor) 注释:加载光标<br/></div>
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表