共找到2條詞條名為RES的結果 展開

RES

Windows程序資源文件

RES文件在Windows編程中被稱為資源文件,用於存放字元串、程序圖標、其他引用圖片。

作用


Delphi的每個主程序中都含有{$R*.RES}指示字,表示載入與程序同名資源文件中存放的程序圖標。巧妙地利用資源文件對於編程有意想不到的作用。

文件的生成


RES文件是由RC文件編譯而來的,請看以下RC文件示例:
文本文件“MyMusic.RC”:
SRC1 FILE1 OnlyYou.mp3
SRC2 FILE2 YesterdayOnceMore.mp3
SRC3 FILE3 MoonRiver.mp3
//另例:
//mycur cursor move.cur //加入游標
//mypic Bitmap Water.BMP //加入點陣圖
//mywav WAVE happy.wav //加入聲音
//myAVI AVI EPOEN.AVI //加入視頻
//myIco ICON CJT.ICO //加入圖標
其中,每一行表示聲明一項資源,每一項資源的聲明包含三個參數定義,第一個參數是資源的名稱,第二個參數是資源的類型描述(本例定義了三類),第三個參數是文件名。參數之間必須由空格隔開。
編寫完成“MyMusic.RC”文件后,將其與上述三個.MP3文件放置在同一文件夾中(為了避免由設置路徑帶來的麻煩)。然後以下面的命令行運行應用程序brcc32.exe(位於..\Delphi6\Bin):brcc32 mymusic.rc需要注意的是,該命令只能在命令行方式下執行;mymusic.rc與brcc32不在統一目錄下,寫brcc32 文件路徑\mymusic.rc。如果系統的PATH環境變數中不包含Delphi的運行路徑,那麼你還需要將brcc32.exe與MyMusic.RC、三個.MP3文件放置在同一路徑中進行。運行上述命令行后,將在同一路徑中得到文件“MyMusic.RES”,這就是一個獨立完整的資源文件。
RES文件的載入
你只需要在項目中的某個單元中(最好是你需要利用這些資源的單元,這樣會使你的應用程序更具有可讀性)加入如下編譯指示:
{$R MyMusic.RES}
儘管該編譯指示可以位於單元的任何位置,但為了使你的源代碼結構合理,最好還是將其並列位於編譯指示“{$R *.dfm}”(每個含有窗體文件的單元中都含有該行編譯指示)。這裡的編譯指示就明確告訴編譯器,在編譯應用程序時需要將資源文件“MyMusic.RES”包含到應用程序中。
資源文件的還原
下面的過程將告訴你如何將應用程序中包含的資源(文件)重新還原。
procedure MusicResToFile(const ResName, ResType,FileName: string);
var
Res: TResourceStream;
begin
Res := TResourceStream.Create(HInstance,ResName, PChar(ResType));
Res.SaveToFile(FileName); //將資源保存為文件,即還原文件
//你還可以進行其它的流操作,在內存中實現對資源利用而不必另存為文件
Res.Free;
end;
調用該過程的示例如:
MusicResToFile('SRC2', 'FILE2', 'TheSecondMusic.MP3');
值得一提的是,利用此方法,你完全可以製作自己的安裝程序,該安裝程序僅包含一個可執行文件,在該可執行文件中以資源的形式包含所有將要安裝的內容(文件)。此外,如果在你的應用程序中需要播放外部音頻文件(如背景音樂、聲音提示等),也可通過此方法將這些外部文件包含到應用程序中,從而避免用戶誤刪這些音頻文件導致應用程序的不完整。
RES文件的調用
資源文件在Delphi中的關鍵字為hinstance.下面給出具體用法.
<1>游標的調用
首先在程序中定義一個值大於0的常量,因為Delphi本身用0-負16來索引默認
的游標,所以我們制定的游標應從表面上1開始索引。然後在窗口的Oncreat事件
中添加以下代碼:
screen.cursor[35]:=Loadcursor (hinstance,'mycur');
其中35為大於1的常量,mycur為游標在資源文件中的名字。如果希望在其他控
件上使用定製游標,例如Panel控制項,只需在程序的適當處加入以下代碼:
Panel1.cursor:=35;
<2>點陣圖的調用
新建一項工程,添加一Timage控制項,在需要顯示的地方寫以下代碼:
Var mymap:Hbitmap;
begin
mymap:=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呢!

品牌介紹


銳易特軟體
RES是realesoft的縮寫,代表創新、實用、貼近客戶,真正為客戶創造價值。
RES Infomatic品牌的應用集成中間件套件由企業服務匯流排(ESB)、服務資源註冊中心(Registry and Repository)、企業應用門戶(Portal)、SOA企業應用平台(SOA Platform) 四大支柱產品家族組成。