製作RES資原始檔
阿新 • • 發佈:2019-01-02
[轉貼]
談資原始檔在delphi中的應用
資原始檔一般為副檔名為res的檔案。在vc中資原始檔用得非常普遍,
但delphi在其聯機幫助中對資原始檔沒作什麼介紹,其實利用其自帶的
資源編譯工具brcc32.exe(一般位於/delphi/bin目錄下),我們完全可
以做出跟vc一樣效果的檔案來。/資原始檔最大的好處是能將一些在必要時才呼叫的檔案跟可執行檔案一
起編譯,生成一個檔案.這樣做最大的好處就是使外部檔案免遭破壞.例如
在一條程式中你要臨時呼叫一幅圖片,一般作法是把圖片放在某一路徑下
,但如果使用者路徑誤刪你的圖片檔案,則可能
使程式找不到相應檔案而出錯崩潰。另外,如果你想自己的程式介面美觀,
想用一些自定義游標,也要用到資原始檔。
資原始檔的使用步驟為:
1.編寫rc指令碼文字
用記事本或其它文字編輯器編寫一個副檔名為rc的檔案。例如:
mycur cursor move.cur //加入游標
mypic bitmap water.bmp //加入點陣圖
mywav wave happy.wav //加入聲音
myavi avi epoen.avi //加入視訊
myico icon cjt.ico //加入圖示
格式分別為在資原始檔中的名稱->型別->實際檔名稱,例如上面
第一行 定義一個名為mycur的游標,實際名稱為加入游標move.cur.
2.將rc檔案編譯成res資原始檔
將指令碼檔案和實際檔案拷到brcc32.exe所在目錄,執行dos命令。
格式為:brcc32 指令碼檔案(回車),例如有一名為myfirst.rc的指令碼檔案,
則執行 brcc32 myfirst.rc(回車)即可。如果你是懶人,也可新建一批
處理檔案,內容 只有一行:brcc32 mufist.rc.(因為delphi安裝後一般會
在自動批處理檔案中指明搜尋路徑的。)如果編譯成功,則會生成一個結尾
為res的檔案,這個 檔案就是我們需要的資原始檔。
3.在delphi單元中加入資原始檔
將生成的res資原始檔拷貝到你所程式設計序的路徑下,在單元檔案
{$r *dfm}後加上一句{$r mufirst.res},則將res檔案加入去,編譯後資
原始檔即已包含在可執行檔案中了。若你有多個資原始檔,也按上法依次
加入。
4.在delphi程式中呼叫資原始檔
資原始檔在delphi中的關鍵字為hinstance.下面給出具體用法
<1>游標的呼叫
首先在程式中定義一個值大於0的常量,因為delphi本身用0-負
16來索引 預設的游標,所以我們制定的游標應從表面上1開始索引。然後
在視窗的oncreat事件中新增以下程式碼:
screen.cursor[35]:load cursor (hinstance,mycur);
其中35為大於1的常量,mycur為游標在資原始檔中的名字。如
果希望在 其他控制元件上使用定製游標,例如panel控制元件,只需在程式的適當
處加入以下程式碼:
panel1.cursor:=35;
<2>點陣圖的呼叫
新建一項工程,新增一timage控制元件,在需要顯示的地方寫以下程式碼:
var mymap:hbitmap;
begin
hmymap:=loadbitmap(hinstance,mypic);
image1.picture.bitmap.handle:=mymap;
end;
其中"mypic"為點陣圖資原始檔中的名稱。
〈3〉avi檔案的呼叫
新建一工程,新增一animate控制元件,在需要的地方加入:
animater1.resname:=myavi;
animater1.active:=true;
其中myavi為視訊檔案在資原始檔中的名稱。
〈4〉呼叫wav檔案
在uses中加入mmsystm單元,以便在程式中播放wav檔案。播放時playsound
(pchar(mywav),hinstance,sndsync or snd_resource);其中mywav為聲音
檔案在資源中的名稱。
〈5〉加入游標
加入游標比較容易,只要將res檔案加入單元檔案中即可。但需注意,名稱
最好取"w"."ww"等,使第一個字母儘量靠後,以免與主程式的圖示順序顛倒。
補充:1.資源型別除上述型別外,還可以字型檔案,字串檔案等。
2.資原始檔不但可以在標準圖形介面下使用還可在控制檯下使用。
下面我們來試驗一下:
新建一工程,將唯一的一個form刪除,然後修改工程檔案。增加一句
{$apptype console},在uses子句中加入mmsystem,並將其它引用單元
刪掉。將begin和end之間語句刪掉。至此,我們就可和turbo pascal
下程式設計序一樣,且還可以呼叫windows的api和資源。將資原始檔----
{$r myfist.res}加入。在begin和end之間寫下:
writeln(演示程式,按任意鍵開始!);
readln;
playsound(pchar(mywav),hinstance,snd_sync or snd_resource);
writeln(演示結束!);
執行程式,將彈出一個標準dos視窗,按任意鍵播放聲音檔案。是不是很cool呢!
我曾下載過一個播放器,在其安裝目錄下我發現有一"dos程式",用滑鼠雙擊它
便彈出一個dos視窗,顯示dos時代特有的畫圖,並有背景音樂!可能就是用這個
方法做的。
3.delphi本身自帶了一個叫image editor的工具,同樣可以編輯資源文
本,但和本文的方法比較,可得出下表:
**************************************
image editor brcc32
bmp 只支援16位色 任意色
游標 黑白兩色 任意色
ico 只支援16位色 任意色
avi 不支援 支援
wav 不支援 支援
字型
字串 不支援 支援
其他
****************************************
談資原始檔在delphi中的應用
資原始檔一般為副檔名為res的檔案。在vc中資原始檔用得非常普遍,
但delphi在其聯機幫助中對資原始檔沒作什麼介紹,其實利用其自帶的
資源編譯工具brcc32.exe(一般位於/delphi/bin目錄下),我們完全可
以做出跟vc一樣效果的檔案來。/資原始檔最大的好處是能將一些在必要時才呼叫的檔案跟可執行檔案一
起編譯,生成一個檔案.這樣做最大的好處就是使外部檔案免遭破壞.例如
在一條程式中你要臨時呼叫一幅圖片,一般作法是把圖片放在某一路徑下
,但如果使用者路徑誤刪你的圖片檔案,則可能
使程式找不到相應檔案而出錯崩潰。另外,如果你想自己的程式介面美觀,
想用一些自定義游標,也要用到資原始檔。
資原始檔的使用步驟為:
1.編寫rc指令碼文字
用記事本或其它文字編輯器編寫一個副檔名為rc的檔案。例如:
mycur cursor move.cur //加入游標
mypic bitmap water.bmp //加入點陣圖
mywav wave happy.wav //加入聲音
myavi avi epoen.avi //加入視訊
myico icon cjt.ico //加入圖示
格式分別為在資原始檔中的名稱->型別->實際檔名稱,例如上面
第一行 定義一個名為mycur的游標,實際名稱為加入游標move.cur.
2.將rc檔案編譯成res資原始檔
將指令碼檔案和實際檔案拷到brcc32.exe所在目錄,執行dos命令。
格式為:brcc32 指令碼檔案(回車),例如有一名為myfirst.rc的指令碼檔案,
則執行 brcc32 myfirst.rc(回車)即可。如果你是懶人,也可新建一批
處理檔案,內容 只有一行:brcc32 mufist.rc.(因為delphi安裝後一般會
在自動批處理檔案中指明搜尋路徑的。)如果編譯成功,則會生成一個結尾
為res的檔案,這個 檔案就是我們需要的資原始檔。
3.在delphi單元中加入資原始檔
將生成的res資原始檔拷貝到你所程式設計序的路徑下,在單元檔案
{$r *dfm}後加上一句{$r mufirst.res},則將res檔案加入去,編譯後資
原始檔即已包含在可執行檔案中了。若你有多個資原始檔,也按上法依次
加入。
4.在delphi程式中呼叫資原始檔
資原始檔在delphi中的關鍵字為hinstance.下面給出具體用法
<1>游標的呼叫
首先在程式中定義一個值大於0的常量,因為delphi本身用0-負
16來索引 預設的游標,所以我們制定的游標應從表面上1開始索引。然後
在視窗的oncreat事件中新增以下程式碼:
screen.cursor[35]:load cursor (hinstance,mycur);
其中35為大於1的常量,mycur為游標在資原始檔中的名字。如
果希望在 其他控制元件上使用定製游標,例如panel控制元件,只需在程式的適當
處加入以下程式碼:
panel1.cursor:=35;
<2>點陣圖的呼叫
新建一項工程,新增一timage控制元件,在需要顯示的地方寫以下程式碼:
var mymap:hbitmap;
begin
hmymap:=loadbitmap(hinstance,mypic);
image1.picture.bitmap.handle:=mymap;
end;
其中"mypic"為點陣圖資原始檔中的名稱。
〈3〉avi檔案的呼叫
新建一工程,新增一animate控制元件,在需要的地方加入:
animater1.resname:=myavi;
animater1.active:=true;
其中myavi為視訊檔案在資原始檔中的名稱。
〈4〉呼叫wav檔案
在uses中加入mmsystm單元,以便在程式中播放wav檔案。播放時playsound
(pchar(mywav),hinstance,sndsync or snd_resource);其中mywav為聲音
檔案在資源中的名稱。
〈5〉加入游標
加入游標比較容易,只要將res檔案加入單元檔案中即可。但需注意,名稱
最好取"w"."ww"等,使第一個字母儘量靠後,以免與主程式的圖示順序顛倒。
補充:1.資源型別除上述型別外,還可以字型檔案,字串檔案等。
2.資原始檔不但可以在標準圖形介面下使用還可在控制檯下使用。
下面我們來試驗一下:
新建一工程,將唯一的一個form刪除,然後修改工程檔案。增加一句
{$apptype console},在uses子句中加入mmsystem,並將其它引用單元
刪掉。將begin和end之間語句刪掉。至此,我們就可和turbo pascal
下程式設計序一樣,且還可以呼叫windows的api和資源。將資原始檔----
{$r myfist.res}加入。在begin和end之間寫下:
writeln(演示程式,按任意鍵開始!);
readln;
playsound(pchar(mywav),hinstance,snd_sync or snd_resource);
writeln(演示結束!);
執行程式,將彈出一個標準dos視窗,按任意鍵播放聲音檔案。是不是很cool呢!
我曾下載過一個播放器,在其安裝目錄下我發現有一"dos程式",用滑鼠雙擊它
便彈出一個dos視窗,顯示dos時代特有的畫圖,並有背景音樂!可能就是用這個
方法做的。
3.delphi本身自帶了一個叫image editor的工具,同樣可以編輯資源文
本,但和本文的方法比較,可得出下表:
**************************************
image editor brcc32
bmp 只支援16位色 任意色
游標 黑白兩色 任意色
ico 只支援16位色 任意色
avi 不支援 支援
wav 不支援 支援
字型
字串 不支援 支援
其他
****************************************