關於VB資源文件

sikeen 2003-03-25 11:47:03
以下是MSDN裡對LoadResPicture說明中的一段:
"LoadResPicture 的使用对于 Visual Basic 应用程序的本地化有好处,这是因为需要翻译的资源在一个资源文件中被隔离,并且无须访问源代码或重新编译该应用程序。 "

可事實上VB編譯時把.res也編譯到.exe中了呀,又如何"无须访问源代码或重新编译该应用程序"呢?請高手指點,如何不把資源文件編譯到.exe中又可直接用VB的資源文件操作函數引用呢?不要用API動態加載.dll的方法啦,那個俺知道。

...全文
72 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sikeen 2003-03-26
  • 打赏
  • 举报
回复
呵呵,謝謝!
不過用vb的方法還是要編譯進.exe對不?看來還是得用api
lihonggen0 2003-03-25
  • 打赏
  • 举报
回复

资源档(.RES)的应用

 



资源档有什麽用处呢?最重要的有两个地方
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)


- load-option
Option Description
------ -----------

PRELOAD Resource is loaded immediately.

LOADONCALL (Default) Resource is loaded when called.


- mem-option
Opt



 


lihonggen0 2003-03-25
  • 打赏
  • 举报
回复
---- 一. 资源在软件设计中的作用

---- 在Windows中,一个资源代表一个Windows对象的数据块,每个可执行文件都包含一个资源表,其中列出了该文件中的资源。应用程序中使用的资源通常可分为两大类:二进制资源和字符串资源;字符串资源指在应用程序的用户界面中出现的所有文本,其中包括菜单、对话框以及提示、警告和错误提示信息;二进制资源包括:图标、位图、光标文件、声音、图象及视频等以二进制格式存放的资源。

---- 应用程序中引入资源文件的最初动机是为使应用程序更容易国际化;把应用程序分成两个概念模块:代码模块和数据模块,如下所示:

数据模块+代码模块=产品
用户接口部件+应用程序部件=本地化产品
---- 数据模块包含所有用户界面的字符串资源而不包含代码,相反,代码模块只包含可运行于所有区域的应用程序代码。因而在开发不同语言版本的应用程序时,本地化小组只须把精力花在资源文件上,这样做有以下优点:

---- 高效:由于代码是相同的,因而在开发新的国际化应用程序只须创建新的资源文件,这样可以顺利地开发不同语言版本的应用程序;安全:无论在内部或利用外部公司本地化程序,都可以不用修改代码,这样做可以减少化在国际版测试上的精力;更好的本地化:由于所有的字符串资源都在一个文件中,因此可以提高本地化工作的效率并防止遗漏。

---- 要将应用程序使用的资源从应用程序中分离出来组成数据模块,可以用资源编译器将这些对象合并到一个资源文件里;利用资源文件组织资源,允许你很容易将大量的图形位图和图标文件直接包含在你的项目中,在对他们进行访问时单独加载,能改进加载时间,避免资源在调用窗口时全部加载而加快程序代码执行效率;除此外,还可以增加空间,这是因为字符串、位图、图标和数据可以不必在调用窗口或模块时就全部加载,而是按照需要从资源文件中加载。

---- 二. 资源在资源定义文件的组织与定义

---- 字符串资源和二进制资源的定义语法分别如下:

---- 1. 字符串资源

---- 在资源定义文件里,字符串资源是包含在一个字符串表中的,定义语法格式:

STRINGTABLE [load_option] [mem_option]
begin
String ID string
.
.
.
end
---- 参数说明

---- -----load_option 指出资源被装栽的方式:preload(程序执行时立即装载);load on call(资源在被调用时装载,默认方式)。

---- -----mem_option 指定资源被载入内存后是否可以移动和卸载。有三个参数可选:Fixed (指定资源存放在一个固定的内存区域中),Moveable(资源在系统有必要压缩内存时可以被移动),Discardable(资源在不再使用时被卸载);

---- -----StringID 指定一个整数作为识别资源的资源号;

---- -----String 字符串资源,它必须包含再两个双引号之内,而且长度不超过255个字节,一个字符串资源在资源定义文件里只能放在一行之中。

---- 资源编译器编译资源时,是按标签号来分类的,每16个字符串为一段,标签号高12位相同的将被划分为同一段,在装载资源文件时是以段来栽入和卸载的。

---- 资源定义例子:

# define IDS_HELLO 1
#define IDS_GOODBYE 2
STRINGTABLE
Begin
IDS_HELLO , “Hello”
IDS_GOODBYE, “goodbye”
End
---- 2.二进制资源

---- 二进制资源是不包含在资源定义文件里的。资源定义文件只包含了一个指向包含该资源的文件的指针,这些指针在资源定义文件里被称为单行声明。

---- 定义语法: nameID keyword [load_option] [mem_option] filename

---- 参数说明:

---- ------nameID 指定一个名字或整数来标识该资源。这个标识号在同类的资源里是唯一的,而在图标类资源中,标识号0是保留号,0号图标资源是应用程序图标。因而,图标类资源的标识号只能从1开始;

---- -----keyword 二进制资源的类别,可以设为以下参数之一:Bitmap (位图文件)、cursor(光标文件)、iocn(图标文件)、sound(声音文件)、video(视频文件);

---- -----load_option 该参数功能与字符串资源对应定义参数相同

---- -----mem_option 该参数功能与字符串资源对应定义参数相同

---- -----fileName 包含资源的文件名,文件名格式采用 MS-DOS的文件名格式,而且必须是全路径文件名,可以用双引号括起来也可以不括起来。

---- 例: 12 Bitmap Picture “c:\disk.map”

---- 3. 资源文件的编译

---- 用资源文件编译器把资源定义文件编译成标准的Windows资源文件后,该资源文件就可以加载到应用项目中被应用程序调用,编译后的文件是标准的资源文件,可由 Microsoft c++和其它大部分的Windows 开发工具使用。编译资源定义文件可以用资源编译器 RC.EXE。

---- 格式:RC/R [option] definition_file source_file

---- ---/R 该参数指定资源文件仅被编译而不连接到可执行文件

---- ---option 此参数为/?则列出资源编译器RC.EXE 的命令行参数;为/fo Name 则指定编译后扩展名为 .RES 的资源文件名;

---- ---definition file 指定被编译的资源定义文件

---- 例: RC /R /fo test.res test.rc

---- 三. 资源在VB5下的调用

---- 编译后的资源文件是标准的Windows 资源文件,可以为大多数的Windows 开发工具使用。在Visual Basic 5.0 下先向工程添加资源文件,然后用Loadresstring(),Loadrespicture(),Loadresdata()函数调用,

函数名 描述
Loadrestring()
从资源文件(.res)装载字符串并返回一个文本字符串;
Loadrespicture()
从资源文件(.res)装载并返回一个Picture
对象,例如图标、位图、或光标;
Loadresdata()
从资源文件(.res)装载并返回一个Byte
数组,用于象 .wav 之类的文件;
---- 调用语法:

---- Loadrestring(index),index是必须的一个参数,它用来指定资源文件中数据的标识号(ID),ID标识号为1的资源号保留给应用程序图标;

---- Loadrespicture(index,format),index含义与上同,Format是必须的一个数值常数,它用来指定返回数据的格式。其设置如下:

常数 设置 描述
VbResBitmap 0 位图资源
VbResIcon 1 图标资源
VbResCursor 2 光标资源
---- Loadresdata(index,format),其参数index含义和Loadrespicture()相同,其中用于Format的设置有:

设置 描述 设置 描述
1 光标资源 7 字体目录资源
2 位图资源 8 字体资源
3 图标资源 9 加速标资源
4 菜单资源 10 用户定义资源
5 对话框 12 群组光标
6 字符串资源 14 群组图标
---- 例:调用前面已定义的字符串资源和位图资源,把按钮bottom1的caption属性设为“Hello”,Form1的Picture属性设为disk.bmp

botton1.caption= Loadrestring(1)
Form1.picture= Loadrespicture(12,0)


 

7,763

社区成员

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

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