Delphi学习使用资源文件,嵌入和提取任何类型的文件

创建资源文件      
首先创建一个.Rc的纯文本文件。格式如下:      
资源标识符   +   关键字   +   资源文件名      
①   资源标识符:程序中调用资源时的特殊标号;      
②   关键字:标识资源文件类型;  
MIDIFILE   midi   '文件名 '
Wave:   资源文件是声音文件;      
RCDATA:   JPEG文件;      
AVI:   AVI动画;      
ICON:   图标文件;      
BITMAP:   位图文件;      
CURSOR:   光标文件;      
资源文件名:资源文件名;      
③   资源文件名:编译的资源文件,比如动画、位图、光标等;      
④   如:MyWav   WAVE   "FileName.Wav "      
使用Borland资源编译器(BRCC32.EXE)转化.Rc文件成.Res文件。在DOS命令行下输入下列命令:      
Brcc32   FileName.Rc   //   Brcc32.Exe在Delphi5Bin文件下。      
3.在工程中引用资源文件      
为了存取我们的资源文件,必须告诉Delphi链接我们的资源文件到应用程序中。因此我们可以在源代码中加入一条编译指令完成上述功能。这条指令必须紧跟在窗口指令后,如下形式:      
{$R   *.DFM}   //Delphi自带编译指令      
{$R   FileName.Res} //新加入的编译资源文件的指令。      
不要删除{$R   *.DFM}指令,因为这行代码告诉Delphi链接下面的资源到窗口的资源中。      
4.调用资源文件      
(1)存取资源文件中的位图(Bitmap)      
程序中如果想存取资源,你必须调用一些Windows   API函数。保存在资源文件中的位图、光标和图标可以通过调用LoadBitmap、LoadCursor和LoadIcon函数存取。      
本例举例说明如何存取资源文件中位图并显示在Timage控件中。      
procedure   TfrMain.btnCanvasPic(Sender:   TObject);      
Image1.Picture.Bitmap.Handle   :=LoadBitmap(hInstance,   ' '资源标识符 ' ');      
end;      
注:如果位图没有装载成功,程序仍旧执行,但是Image将不再显示图片。你可以根据LoadBitmap函数的返回值判断是否装载成功,如果装载成功返回值是非0,如果装载失败返回值是0。      
另外一个存取显示位图的方法如下      
procedure   TfrMain.btnLoadPicClick(Sender:   TObject);      
begin      
Image1.Picture.Bitmap.LoadFromResourceName(hInstance,   ' '资源标识符 ' ');      
end;      
(2)存取资源文件中的光标      
Screen.Cursors[]是一个光标数组,使用光标文件我们可以将定制的光标加入到这个属性中。因为默认的光标在数组中索引值是0,所以除非想取代默认光标,最好将定制的光标索引值设为1。      
procedure   TfrMain.btnUseCursorClick(Sender:   TObject);      
begin      
Screen.Cursors[1]   :=LoadCursor(hInstance, ' '资源标识符 ' ');      
Image1.Cursor   :=1;      
end;      
(3)存取资源文件中的图标      
将图标放在资源文件中,可以实现动态改变应用程序图标。      
procedure   TfrMain.LoadIconClick(Sender:   TObject);      
begin      
Application.Icon.Handle   :=   LoadIcon(hInstance,   ' '资源标识符 ' ');      
End;      
(4)存取资源文件中的AVI      
procedure   TfrMain.LoadIconClick(Sender:   TObject);      
begin      
Animate1.ResName   := ' 'MyAvi ' '   ;   //资源标识      
Animate1.Active   :=True   ;      
End   ;      
(5)存取资源文件中的JPEG      
把jpeg单元加入到Interface的uses单元中。      
procedure   TForm1.LoadJPGClick(Sender:   TObject);      
var      
Fjpg   :   TJpegImage   ;      
FStream   :TResourceStream   ;      
begin      
Fjpg   :=TJpegImage.Create   ;      
FStream   :=   TResourceStream.Create   (Hinstance, ' '资源标识符 ' ',RT_RCDATA)   ;      
FJpg.LoadFromStream   (FStream)   ;      
Image1.Picture.Bitmap.Assign   (FJpg);      
end;      
(6)存取资源文件中的Wave      
把MMSystem加入到Interface的uses单元中      
procedure   TForm1.LoadWaveClick(Sender:   TObject);      
begin      
PlaySound( ' 'MyWav ' ',   HInstance,   Snd_ASync   or   Snd_Memory   or   snd_Resource)   ;      
end;

转载于:https://www.cnblogs.com/kuke/archive/2011/02/25/1964663.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值