在几乎所有的Windows应用程序中都拥有资源文件,这些文件定义使用应用程序将要显示很多的用户界面元素,以及提供程序所需要的各种类型数据的存储场所。资源文件在VC应用程序中应用十分广泛,在VB应用中却很少提及它。其实在开发VB应用程序时,一样可以将要用到的字符串、位图、图标和其它类型的数据等做成一个资源文件。因为这样做至少有以下几个优点:(1)提高性能减少内存空间的占用,这是因为字符串、位图、图标和数据可以不必在程序启动或调用窗体时就全部加载,而是根据需要随时从资源文件中加载。(2)将所需要的资源文件中单独存放在一个资源文件中,使用移植程序和更改一些界面显示变得十分简单,不必访问程序的源代码。

  下面就和大家具体谈谈如何在VB中建立和使用资源文件。

  首先,我们先了解一下windows应用程序中一般经常使用的资源:

  位图:位图是用于创建应用程序用户界面的图像。例如,用户可以为工具栏按钮创建一套位图,也可以创建在其它窗口上显示的位图。一般来说,都是在图像编辑器中创建位图,然后再将该位图添加到资源文件中。

  图标:图标是类似于位图的小图像,然而,虽然位图可以具有任意大小的尺寸,但是图标却小得多,通常为16*16像素或32*32像素。图标使用的很多方法与位图一样。然而,图标通常被用作代表最小化应用程序的图象、代表应用程序文档类型的图像和其它类型的应用系统。

  字符串表:就是指文本串的一个表格,通常来说字符串用来显示菜单命令的提示、对话框中和消息框中显示的信息。要访问串表格中的文本串,需引用串的ID,它与定义表格的源文件中的串相联系。

  光标:光标是代表鼠标在屏幕上的位置的图像。尽管windows 系统定义和许多类型的光标,但用户也可以创建自己需要的光标。

  定制资源:定制资源是用户想存储在其应用程序资源文件中的任何类型的数据。这些数据可以是文本文件或二进制文件,用户可以用任何喜欢的方式定制资源。资源文件只是作为存储区域。创建了定制资源,可以避免必须从磁盘文件中加载数据,因为数据随资源文件一起加载。

  对话框:对话框的资源定义包括样式标志(控制对话框外观及行为的值)以及对话框中含控件的大小和位置。

  菜单栏:用户应用程序的菜单栏也可以在资源文件中定义。可以在资源文件中指定命令和命令的ID,以用命令在菜单中的位置。

  加速器:加速器也称为热键。它们是用户快速选取命令时所按下的键,使用热 键时,不必在应用程序的菜单中寻找命令。加速器在一个表格中定义,这个表将按键与命令资源的ID联系起来。

  那么在VB开发环境中如何使用这些资源呢?

  1、添加资源文件编辑器,

   启动VB6.0的IDE集成环境,新建一个工种。点选菜单“外接程序”下的“外接程序管理器”,在弹出的对话框的列表框中选择“VB 6资源编辑器”,选择加载并单击“确定“后退出对话框。这样在“工具”菜单栏中就有一项“vb资源编程器”了。打开这个工具就可以进行资源文件的编辑了。

  2、编辑资源文件

  在资源编辑器中编辑资源文件非常简单。它可是编辑我们在上面先提到的位图、图标、光标、字符串及定制资源五种类型的资源,如图1所示:

  在进行编辑时,点击相应的图标就可以添加资源了。

  编辑资源的方法也很容易,以添加图片为例看一看添加位图的方法:点击添加位图按钮,在弹出的对话框中选择一个位图文件,单击“OK”后,位图的添加就完成了,在这里要注意属性按钮,点击它以后,可以选择请语言版本并输入资源的ID号,这个ID号是标识一类资源的唯一编号,必须记住资源的ID号,以使在应用程序中调用。编辑好资源后,关闭资源编辑器,资文件自动加入新建的工种内。另外,也必须将资源文件保存。其它资源的编辑方法也大体上一样。

  3、使用资源文件,在应用程序中调用资源文件与直接使用资源基本上是一致的。对了,在一个工种中只能保存一个资源文件,在使用资源文件之前,请必须保证资源已经加入到资源文件中了。

  调用资源文件中资源的函数有:

  LoadResString 返回一个文本字符串。语法:LoadResString(index) index必需是一个整数,它用来指定资源文件中数据的标识符(即经常提到的ID号),如果ID号为1的资源保留给应用程序图标。

  LoadResPicture 用以从资源 (.res) 文件装载位图、图标或光标。它的语法:

  LoadResPicture(index, format)

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

  参数 描述

  index 一个整数或字符串,它用来指定资源文件中数据的标识符 (ID) 。ID标识符为 1 的资源保留给应用程序的图标。

  format 必需的。一个数值或常数,如下列“设值"中所描述的,指定返回数据的格式。

用于 format 的设置值有:

vbResBitmap 位数 0 位图资源

  vbResIcon 图标 1 图标资源

  vbResCursor 2 光标资源

  说明:可以使用 LoadResPicture 函数代替对存储在 Form 或控件的 Picture 属性中的图形的引用。

  LoadResData 返回一个Byte数组,用以从资源 (.res) 文件装载若干可能类型的数据。语法 为:LoadResData(index, format)

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

  部分 描述

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

  Format 必需的。一个数值,它用来按照下列“设置值"中的描述,指定返回数据的原始格式。该数值也可以是用户定义资源的字符串名。

  设置值 用于 format 的设置值有:

  设置值 描述

  1 光标资源

  2 位图资源

  3 图标资源

  4 菜单资源

  5 对话框

  6 字符串资源

  7 字体目录资源

  8 字体资源

  9 加速键表

  10 用户定义资源

  12 群组光标

  14 群组图标

  说明:LoadResData 从资源文件装载的数据可以达到 64K。

  最后我们用一个简单的例子来说明这几个函数的用法:

  (1)建立一个窗体,在窗体上放置三个按钮,一个图片框用来显示图片、图标。

  按照前面讲述的方法添加资源文件编辑器并建立工程文件,里面包含一个字符串,位图、图标、光标和一个自定义的资源。

  程序代码如下所示:

Private Sub cmdLoadData_Click()

Dim tt As Byte

End Sub

Private Sub cmdLoadPicture_Click()

picTest.Picture = LoadResPicture(101, 1) '如何为0表示位图,为2表示光标

End Sub

Private Sub cmdLoadstring_Click()

Dim str As String

str = LoadResString(101)

MsgBox str

End Sub

  下面详细说明资源文件的使用方法:

LoadResData 返回一个Byte数组,用以从资源 (.res) 文件装载若干可能类型的数据。语法为: LoadResData(index, format)

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

  部分 描述

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

  Format 必需的。一个数值,它用来按照下列“设置值"中的描述,指定返回数据的原始格式。该数值也可以是用户定义资源的字符串名。

  设置值 用于 format 的设置值有:

   设置值 描述

  1 光标资源

  2 位图资源

  3 图标资源

  4 菜单资源

  5 对话框

  6 字符串资源

  7 字体目录资源

  8 字体资源

  9 加速键表

  10 用户定义资源

  12 群组光标

  14 群组图标

VB 中资源文件的使用技巧

一、开发中英(简、繁)双版本

  现在比较流行的软件都会有中文版、英文版、繁体版等等多个版本,并可以根据系统的语言自动显示相适应的版本,那么这个功能在 VB 是如何实现得呢的:

1、 首先通过 API 函数GetSystemDefaul tLCID 判断系统的语言

Option Explicit

Dim lang As String

Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long

Private Sub Form_Load()

Dim LocaleID As Long

LocaleID = GetSystemDefaultLCID

Select Case LocaleID

Case &H404

MsgBox "当前系统为:中文繁体", , "语言"

Case &H804

MsgBox "当前系统为:中文简体", , "语言"

lang = "1"

Case &H409

MsgBox "当前系统为:英文", , "语言"

lang = "2"

End Select

End Sub

2、然后程序就可以加载保存在资源文件(这里我们就是使用的这种方法)、注册表、INI 文件、文本文件或其他文件中的各类字符串,以达到达到实现多种语言的目的。

  ⑴启动 VB6.0,在“外接程序→外接程序管理器”中加载“Visual Basic 6 资源编辑器”

  ⑵在 VB 资源编辑器窗口中,点击“编辑字符串表格”输入如下资料:

  标识号 中文(中国)

  101 例子

  102 中文

  103 英文

  201 Ensample

  202 Chinese

  203 English

  ⑶保存资源文件,写如下代码:(自定义装载字符的函数 LoadString)

Sub LoadString()

Me.Caption = LoadResString(Int(lang & "01"))

Command1(0).Caption = LoadResString(Int(lang & "02"))

Command1(1).Caption = LoadResString(Int(lang & "03"))

End Sub

  ⑷怎么样一个简单的中英双版本的程序就做出来了,如果把 lang 的值设置为 1,则显示中文,如果把 lang 的值设置为 2,则显示英文。

ps:更简单实用的方法是:把不同语言文字放在同一个标识号ID对应的不同字符串表格中即可。VB 会自动实现多种语言转换!

二、 直接播放EXE文件中的声音文件

  使用资源文件,可以直接在在EXE文件中播放声音文件(WAV文件),使程序显得更加专业。

  ⑴启动 VB6.0,在“外接程序→外接程序管理器”中加载“Visual Basic 6 资源编辑器”

  ⑵在 VB 资源编辑器窗口中,点击“添加自定义资料”,增加任意的 WAV 文件,再双击刚刚创建的自定义资源,弹出”编辑属性”窗口,定义如下:

  类型: "WAVE"

  标识号: 102

  语言: 中文(中国)

  ⑶保存资源文件,写如下代码:

Option Explicit

Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long

Private Declare Function sndPlaySoundFromMemory Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long

Public Const SND_ASYNC = &H1&

Public Const SND_MEMORY = &H4&

Private Sub Command5_Click() 注释:播放 WAV 文件

Dim bArr() As Byte

bArr = LoadResData(102, "WAVE")

sndPlaySoundFromMemory bArr(0), SND_ASYNC Or SND_MEMORY

End Sub

  ⑷按 F5 运行本程序,点击 Command 按钮,就可以听到你选定的 WAV 文件的声音了。

三、 直接调用各类图标、光标图片

  在一个程序中,我们可能需要调用多个 图标、光标、图片文件,一般来说我们主要是使用 ImageList 控件,不过其时使用资源文件是最好的方法(可以少使用一个控件呀)。

  ⑴启动 VB6.0,在“外接程序→外接程序管理器”中加载“Visual Basic 6 资源编辑器”

  ⑵在 VB 资源编辑器窗口中,点击“添加光标”,“添加图标”,“添加位图”,装载所需要的文件。

  ⑶程序代码如下:

Me.Icon = LoadResPicture(101, vbResIcon) 注释:加载图标

Picture1.Picture = LoadResPicture(101, vbResBitmap) 注释:加载位图

Command1.MouseIcon = LoadResPicture(101, vbResCursor) 注释:加载光标

Private Sub Command1_Click()

'功能:测试加载jpg图片

'先要引用:Microsoft ActiveX Data objects 2.8 library

'貌似在资源编辑器里没有jgp格式的,只有添加到自定义文件里

'然后设置 类型:"jpg",标识号:8

'LoadResData返回的是byte,所以用二进制流去读

Dim iStm As ADODB.stream

Set iStm = New ADODB.stream

With iStm

.Mode = adModeReadWrite

.Type = adTypeBinary '二进制模式

.Open

.Write LoadResData(8, "jpg") '这里注意了,如果当前目录下存在test1.jpg,会报一个文件写入失败的错误.(改了adSaveCreateOverWrite就能覆盖了)

.SaveToFile App.path & "\test1.jpg", adSaveCreateNotExist

End With

Image1.Picture = LoadPicture(App.path & "\test1.jpg") '关闭对象

iStm.Close '如果用了adSaveCreateNotExist,就得加上下面这句删除保存的图片文件

Kill App.path & "\test1.jpg"

End Sub

Private Sub Command1_Click()

'功能:测试加载jpg图片

'先要引用:Microsoft ActiveX Data objects 2.8 library

'貌似在资源编辑器里没有jgp格式的,只有添加到自定义文件里

'然后设置 类 ...

Dim Filenumber As Long

Dim file() As Byte

file = LoadResData(8, "jpg")

Filenumber = FreeFile

Open App.path & "\test.jpg" For Binary As #Filenumber

Put #Filenumber, , file

Close #Filenumber

Image1.Picture = LoadPicture(App.path & "\test.jpg")

'格式:(其主要思想是通过二进制数据的操作) '由于返回的是byte

Dim file() As Byte

file = LoadResData(标识符id, 你定义的格式)

Filenumber = FreeFile

Open App.path & "\原文件格式的名称" For Binary As #Filenumber

Put #Filenumber, , file

Close #Filenumber

'下面就是你要操作的内容,比如加载图片到图片框;调用exe等等;

资源档有什么用处呢? 最重要的有两个地方

1.国际发行:我们将Application中所有的文字从Resource用读取,那么,只要更动

Resource档的内容,就可以用不同语言的方式来显示。

2.管理资源:例如说,我们的AP中用了数百张的图片或声音,不用Resource档的话,在发行出去的AP中, 就必需有数百个图形、声音档,那似乎不太好,使用Resource档,便可以将这些图形、声音放进一个.Res档。使用RC.exe来Compiler我们所定义的Resource档, RC.EXE在vb5.0光碟中的\TOOLS\RESOURCE

Resources 可分成两大部份:

- String resources (text strings such as "Hello World").

- Binary resources (icons, bitmaps, cursors, sounds, video等)

String Resources语法: STRINGTABLE [load-option] [mem-option]

BEGIN

stringID string

.

.

.

END

参数说明 :

- load-option 可以是以下两种 Option Description

PRELOAD Resource is loaded immediately.

LOADONCALL (Default) Resource is loaded when called.

- mem-option 可以是以下三种

Option Description

FIXED Resource remains at a fixed memory location.

MOVEABLE Resource can be moved if necessary in order to compact memory.

DISCARDABLE Resource can be discarded if no longer needed.

- stringID 自行定义的integer,用来定义字串 resource.

- string 我们定义的字串,字串前后要用双引号(")将之包围起来,字串长度不可超过255 bytes,而且字串要在同一行。

BINARY RESOURCES

语法:

nameID keyword [load-option] [mem-option] filename

参数:

- nameID 定义一个於以下keyword类别中,一个唯一的名称或数字,即,有三个BITMAP类别的Resource,其nameID可以分别为1,2,3不重覆,而另有三个ICON的资源,其nameID亦可分别为1,2,3,不会和BITMAP的1,2,3相冲突。注:ICON类别的nameID不可以为0,0保留给 Visual Basic icon。nameID亦可以为字串

- keyword 定义资源类别 Option Description

BITMAP Defines a bitmap (.BMP)

CURSOR Defines a cursor (.CUR)

ICON Defines an icon (.ICO)

SOUND Defines a wave file (.WAV)

VIDEO Defines a video file (.AVI)

例:打开一执行文件

Dim App1() As Byte '定义数组
If Dir("11.exe") = "" Then '是否存在
App1 = LoadResData(101, "CUSTOM") '资源位置
Open "11.exe" For Binary As #2
Put #2, , App1 ' 释放
Close #2 '关闭文件号
End If
摘自:http://wenku.baidu.com/view/15917b2458fb770bf78a55e5.html

相关文章参考:


※VB将自定义资源中的文件释放出来

※VB控件注册 - 利用资源文件将dll、ocx打包进exe文件

※VB利用资源文件进行工作

※VB 释放资源文件到指定目录函数

※VB 读取资源文件里面的字符串

※VB中资源文件.res的使用方法详解

※VB6.0中创建和使用文本资源文件


VB部分相关文章推荐:


※VB 释放资源文件到指定目录函数

※VB 读取资源文件里面的字符串

※VB中资源文件.res的使用方法详解

※VB6.0中创建和使用文本资源文件

※VB WindowsMediaPlayer 播放

※vb中WindowsMediaPlayer的常用属性和方法

※VB Environ系统环境变量函数大全

※VB 去除文本框粘贴功能

※VB LISTBOX

※VB 删除数组中的重复元素

※VB数组快速排序算法

※关于三个概念:ActiveX、OLE和COM

※VB 获得磁盘的文件系统

※VB中用API实现文件拖放

※加密算法-MD5算法

※VB中使用MD5算法

※VB 全局热键HOOK (不占系统资源版本)

※VB 小技巧自定义TextBox文本框右键菜单

※VB 写下载者代码

※VB 一行代码的诀窍

※VBS教程-wscript对象

※vb枚举进程

※在VB中如何让线程或进程在指定的CPU上运行

※VB判断指定的WORD文档是否被打开

※VB如何读取快捷方式的目标路径

※VB用API控制输入法状态

※为系统加载右键注册控件选项【VB 注册控件】

※VB如何根据窗口标题获得进程名称

※VB快速查找大型文件中包含的字符串

※VB实现可执行文件运行时自删除

※VB 打开txt,bat,jpg 任意后缀程序

※VB 写文件关联程序

※VB 自启动建立右键菜单

※VB 判断IP能否ping通

※VB FTP操作类(可上传、下载、创建文件夹等等)

※VB部分文件汇总B

※Vb 求素数最经典的方法也是最快的方法

※vb用数组方式快速导出MSFlexGrid表格数据到Excel表格中

※VB中MsFlexGrid控件的使用细则

※点击MSFlexGrid数据控件的标题进行数据排序

※VB 获取鼠标坐标

※VB中NEW的用法(申请内存空间)

※VB CreateObject函数

※VB中的New 与 CreateObject的区别

※VB ListBox 添加不重复的值

※VB 单击ListView控件某列表头进行排序

※VB 简单实现简体与繁体互转

※VB 阿拉伯数字转换为中文大写数值函数

※VB 获取Textbox文本框中的行数函数


更多精彩>>>

[转]VB中资源文件.res的使用方法详解相关推荐

  1. thinkphp3.1.3 getshell_C# / VB.NET 在PPT中创建、编辑PPT SmartArt图形的方法详解_C#教程...

    本文介绍通过C#和程序代码来创建和编辑PPT文档中的SmartArt图形.文中将分两个操作示例来演示创建和编辑结果. 使用工具:Spire.Presentation for .NET hotfix 5 ...

  2. php 去重_php求两数组交集的四种方法详解

    题目:给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1],nums2 = [2,2] 输出: [2] 示例 2: 输入: nums1 = [4,9,5 ...

  3. python反向缩进_在Pycharm中对代码进行注释和缩进的方法详解

    在Pycharm中对代码进行注释和缩进的方法详解 一.注释 1. #单行注释 2. """ 多行注释 """ 3. pycharm多行注释快 ...

  4. python流获取控制台_对Python捕获控制台输出流的方法详解

    有时候我们的代码里可能要调用控制台命令,比如我想用Python写一个批量编译 .java 文件的脚本,用到如下代码 常规用法 os.system import os,traceback try: p ...

  5. c调用python脚本如何获取结果_使用C++调用Python代码的方法详解

    一.配置python环境问题 1.首先安装Python(版本无所谓),安装的时候选的添加python路径到环境变量中 安装之后的文件夹如下所示: 2.在VS中配置环境和库 右击项目->属性-&g ...

  6. python列表的内置方法_Python内置方法详解

    1. 字符串内置方法详解 为何要有字符串?相对于元组.列表等,对于唯一类型的定义,字符串具有最简单的形式. 字符串往往以变量接收,变量名.可以查看所有的字符串的内置方法,如: 1> count: ...

  7. node作为java中间间_node作为中间服务层如何发送请求(发送请求的实现方法详解)...

    GET请求: var http = require('http'); var qs = require('querystring'); var data = { a: 123, time: new D ...

  8. PHP cURL应用实现模拟登录与采集使用方法详解

    对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程链接的数据,但是它的可控制性太差了,对于各种复杂情况的采集情景,file_get_co ...

  9. asp.net文本编辑器FCKeditor使用方法详解 - 橙色大地 - 博客园

    asp.net文本编辑器FCKeditor使用方法详解 效果图: 那么为什么说是FCKeditor的冰冷之心呢?这不是哗众取宠,主要是说它使用起来有点麻烦,下文就详细说明如何搞定这玩意儿. 1.FCK ...

最新文章

  1. iOS架构-cocoapods之公共库的发布与集成(16)
  2. python的中文含义-python __all__ 含义
  3. 微信跳一跳高分系列三:用 adb 破解微信跳一跳小程序
  4. React中的CSS——styled-components
  5. Linux Server 安装 raid 1
  6. SpringCloud微服务:基于Nacos组件,整合Dubbo框架
  7. Address already in use: JVM_Bind 8083端口被占用的几个解决办法
  8. 类和对象(2)—— 类的封装和访问控制
  9. “常程跳槽小米”裁决出炉:常程继续履行竞业限制,还要赔500多万...
  10. 代码中,对象类与管理类要分开
  11. 计算机科学与技术职业规划1000字,计算机职业生涯规划书1000字
  12. java 传入一个日期, 计算公历节日和农历节假日的常用类(包括除夕、清明节、母亲节、父亲节的算法)
  13. SAP Hana 数据库游标使用方法示例
  14. 5、passcode
  15. 设计水杯,门锁的测试用例
  16. 苹果笔记本上玩windows to go
  17. Latex中多个表格的引用
  18. java编译器 jit_JIT编译器
  19. 分布式鲁棒优化初学1
  20. 祝贺| 蚂蚁金服年轻交互设计师陈凯翔,荣获HCII 2018 最佳论文奖

热门文章

  1. 代码有温度 科技需向善
  2. 还在低效搬砖?看 BIM 如何颠覆了土木工程?
  3. 披着 Chromium 皮的微软 Edge 浏览器到底长什么样?
  4. 微软智能云三驾马车 Azure、Office 365、Dynamics 365 齐聚中国
  5. iOS 11 正式版发布,都有哪些新内容?
  6. android眼动追踪开源,Eyeboard:低成本的开源眼动跟踪解决方案
  7. py脚本实现用例执行html报告,pytest文档7-pytest-html生成html报告
  8. 细聊分布式ID生成方法-2
  9. java判断名字是否为张三_用java代码写一个判断名字是不是以K或T开头的?
  10. 宏程序自动生成软件_【软件】宏程序自动生成器V3.0下载