在VB編程中有效地組織和利用資源

發表于:2007-07-14來源:作者:點擊數: 標簽:
中國電子產品 可靠性 與環境試驗研究所 黃茂生 ---- 一. 資源在軟件設計中的作用 ---- 在 Windows 中,一個資源代表一個Windows對象的數據塊,每個可執行文件都包含一個資源表,其中列出了該文件中的資源。應用程序中使用的資源通??煞譃閮纱箢悾憾M制資
中國電子產品可靠性與環境試驗研究所 黃茂生

---- 一. 資源在軟件設計中的作用

---- 在Windows中,一個資源代表一個Windows對象的數據塊,每個可執行文件都包含一個資源表,其中列出了該文件中的資源。應用程序中使用的資源通??煞譃閮纱箢悾憾M制資源和字符串資源;字符串資源指在應用程序的用戶界面中出現的所有文本,其中包括菜單、對話框以及提示、警告和錯誤提示信息;二進制資源包括:圖標、位圖、光標文件、聲音、圖象及視頻等以二進制格式存放的資源。

---- 應用程序中引入資源文件的最初動機是為使應用程序更容易國際化;把應用程序分成兩個概念模塊:代碼模塊和數據模塊,如下所示:

數據模塊+代碼模塊=產品
用戶接口部件+應用程序部件=本地化產品

---- 數據模塊包含所有用戶界面的字符串資源而不包含代碼,相反,代碼模塊只包含可運行于所有區域的應用程序代碼。因而在開發不同語言版本的應用程序時,本地化小組只須把精力花在資源文件上,這樣做有以下優點:

---- 高效:由于代碼是相同的,因而在開發新的國際化應用程序只須創建新的資源文件,這樣可以順利地開發不同語言版本的應用程序;安全:無論在內部或利用外部公司本地化程序,都可以不用修改代碼,這樣做可以減少化在國際版測試上的精力;更好的本地化:由于所有的字符串資源都在一個文件中,因此可以提高本地化工作的效率并防止遺漏。

---- 要將應用程序使用的資源從應用程序中分離出來組成數據模塊,可以用資源編譯器將這些對象合并到一個資源文件里;利用資源文件組織資源,允許你很容易將大量的圖形位圖和圖標文件直接包含在你的項目中,在對他們進行訪問時單獨加載,能改進加載時間,避免資源在調用窗口時全部加載而加快程序代碼執行效率;除此外,還可以增加空間,這是因為字符串、位圖、圖標和數據可以不必在調用窗口或模塊時就全部加載,而是按照需要從資源文件中加載。

---- 二. 資源在資源定義文件的組織與定義

---- 字符串資源和二進制資源的定義語法分別如下:

---- 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)

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97