关于如何将Wav文件做到EXE文件里 AND bluebird到这里拿关于快捷键的分(60分)

  • 主题发起人 茶叶蛋
  • 开始时间

茶叶蛋

Unregistered / Unconfirmed
GUEST, unregistred user!
本来想只开一个给分的贴子,但是总觉得这样对不起Down离线浏览的朋友们,
就顺便贴一篇文章吧,好像最近有人问这个问题的。

资源实做举例--如何将Wav文件做到EXE文件里(转)
唐春晖

使用过C++的朋友们都知道,资源在Windows编程里非常重要,
合理地运用资源可以使程序更加灵活。其实在Delphi里,同
样也可以制作资源,只不过Delphi本身对可视的编程强调很
多,对资源的制作就没有多加解释,也没有象Borland C++
里提供了资源制作工具Resource WorkShop,这些都没有
关系,下面我就通过将WAV文件做成资源,从而编译进EXE文
件来介绍一下如何利用Delphi本身提供的工具制作资源。16
位的Delphi1.0和32位的Delphi2.0、3.0都提供了资源编译工
具,其中Delphi1.0的资源编译器叫BRCC.EXE,Delphi2.0的
资源编译器叫BRCC32.EXE 用来编译32位资源,所有资源编
译器都只提供了命令行版本,没有提供Windows;版本。制作
一个资源一般要通过以下几个步骤:
1)编写.RC文件
..RC文件是资源的源文件,编译器也就编译这个文件,生成
.RES的资源文件首先在我们的项目子目录中建立一个纯文本
文件,起名叫Sound.rc,文件中有一行,内容为:
SOUND1 WAV SOUND.WAV
其中SOUND.WAV为一个Windows下普通的声音?
2)编译它
在DOS的提示符下打BRCC SOUND.RC硬盘哗啦啦转一会儿后,
就编译完了
3)制作程序
这也是最复杂,最灵活的一步,首先启动Windows,再启动
Delphi,并且将项目中的文件保存到我们的项目中的子目录中。
在Unit1.pas中找这么一行{$R *.DFM}把我们的资源文件就
声明在后面{$R SOUND.RES}然后,在Form1中声明两个全局
变量
PtrSound : PChar;
hRes : THandle;
{handle to the loaded resource if 0 indicates nothing playing}
再在Form1的Create事件中写下如下代码
procedure TForm1.FormCreate(Sender: TObject);
var
hResInfo : THandle;
begin
hResInfo := FindResource(HInstance, 'SOUND1', 'WAVE');
hRes := LoadResource(HInstance, hResInfo);
if hRes > 32 then {its a good load}
begin {lock the resource}
ptrSound := LockResource(hRes);
end;
end;
然后在Form1中放一个按钮Button1,
写如下代码:
procedureTForm1.Button1Click(Sender:TObject);
begin
sndplaysound(ptrSound,snd_async or snd_Memory);
end;
这时候就可以运行了,当然,这只是一个例子,只是提供
了调用资源的一种方法,距离实际应用还有一段距离。
愿这个Tip能给大家起个抛砖引玉的作用。

其实 用Delphi的ImageEdit也可编辑生成RES
 
听君一席话,胜读十年书。象这种事情希望你能多多发扬......
 
晓茶好人
 
不好意思
 
Mission accomplished.
 
顶部