出具体用法:
(1)光标的调用
首先在程序中定义一个值大于0的常量,因为默认的光标在数组中索引值是0,所以除非想取代默认光标,最好将定制的光标索引值设为1或以上的值。然后在窗体的OnCreate事件中添加以下代码:
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文件的调用
新建一工程,在Win32选择添加一Animate组件,在需要的地方加入:
Animate1.ResName:='myAVI';
Animate1.Active:=true;
其中myAVI为视频文件在资源文件中的名称。 但Animate组件只能播放无声的小AVI文件,可以应用Windows API 中的MCISendString 函数来播放有声的AVI文件,具体操作可参看下面的MP3文件的调用方法。
(4)调用WAV文件
在uses中加入mmsystm单元,以便在程序中播放WAV文件。播放时在需要的地方加入PlaySound(pchar('mywav'), hinstance, sndsync or snd_resource); 其中mywav为声音文件在资源文件中的名称。
(5)加入图标
将图标放在资源文件中,可以实现动态改变应用程序图标。
Application.Icon.Handle := LoadIcon(
hInstance,' myIco ');
myIco为图标文件在资源中的名称。
(6)读取资源文件中的JPEG
如何把JPG图像读出来呢?用资源文件加流方式即可。先把jpeg单元加入到Interface的uses中,具体方法如下:。
var Stre
am: TStream;
MJpg: TJpegImage;
begin
Stream:= TResourceStream.Create(
HINSTANCE,'MyJpg','JPEG');
try
MJpg:=TJpegImage.Create;
try
MJpg.LoadfromStream(Stream);
Image1.Picture.Assign(MJpg);
finally
MJpg.Free;
end;
finally
Stream.Free;
end;;
end;
其中MyJpg为Jpg文件在资源文件中的名称。
(7) 调用MP3文件
在uses中加入mmsystm单元, MP3的资源类型是自定义的,在MP3资源文件读取时,需要调用Delphi自带的TResourceStream对象,它提供对Windows 应用程序资源的访问,因此称它为资源流;并应用了Windows API 中的MCISendString 函数。
procedure TForm1.Button1Click(Sender: TObject);
var res: TResourceStream;
filename: String;
begin
filename:='temp.mp3';
res:=TResourceStream.Create(0, 'MyMp3', Pchar('FILE1'));//建立流
res.SaveToFile(filename);// 建立一个临时文件
MCISendString(Pchar('open '+filename+' type mpegvideo alias ww'), nil,0,0); //打开文件及播放设备
MCISendString('play ww',nil,0,0);//播放MP3文件
res.Free ;//释放内存中的数据
DeleteFile(filename);//删除临时文件
end;
如果要停止播放则使用:
MCISendString('stop ww',nil,0,0);
上述程序不仅适合MP3资源文件的读取,本程序还可适应于mid、wma、avi、dat、
mpeg等外部媒体文件。
(8)其它文件资源的应用
上面说的是直接在程序本身的调用。其实资源文件还有其它用法。比如说在你的程序中携带其它文件,要用的时候释放出来。
例如: myexe exefile 'ha1.exe' //脚本文件
下面是自定义释放函数ExtractRes,本例中使用如下:
ExtractRes('exefile','myexe','d:\new.exe');
把ha1.exe以new.exe为名字保存到d盘根目录下。
function TForm1.ExtractRes(ResType, ResName, ResNewName: string): boolean;
var Res: TResourceStream;
begin
try
Res := TResourceStream.Create(
Hinstance, Resname, Pchar(ResType));
try
Res.Saveto