// So kann man
einen Wave-Sound aus einer Ressource abspielen:
// Als erstes erstellt man mit einem Texteditor (notepad.exe) eine *.rc
Datei,
// z.B. "test.rc". Dort hinein schreibt man beispielsweise:
//
cat WAVE
c:\katz.wav
// Diese Datei wird mittels des Programms "brcc32.exe" zu "test.res"
übersetzt.
// Getestet mit D4 unter XP
// Variante 1
(für ganz kurze Geräusche geeignet)
{$R test.res}
uses mmsystem;
var
Song: THandle = 0;
Zeiger: PChar;
procedure TForm1.FormCreate(Sender: TObject);
begin
Song := FindResource(HInstance, 'cat', 'WAVE');
if Song <> 0 then begin
Song := LoadResource(HInstance, Song);
if Song <> 0 then begin
Zeiger := LockResource(Song);
end;
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if Song <> 0 then begin
UnlockResource(Song);
FreeResource(Song);
end;
end;
// Abspielen
procedure TForm1.Button7Click(Sender: TObject);
begin
if Song <> 0 then PlaySound(Zeiger, 0, SND_ASYNC or SND_MEMORY);
end;
// ---------------------------------------------------------
// Variante 2
(einfacher)
{$R test.res}
uses mmsystem;
procedure TForm1.Button8Click(Sender: TObject);
begin
PlaySound(PChar('cat'), HInstance, SND_ASYNC or SND_RESOURCE);
end;
// ---------------------------------------------------------
// Variante 3
(Stream)
{$R test.res}
uses mmsystem;
var
tr: TResourcestream;
procedure TForm1.FormCreate(Sender: TObject);
begin
tr := tresourcestream.create(hinstance, 'cat', 'WAVE');
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
tr.free;
end;
// Abspielen
procedure TForm1.Button1Click(Sender: TObject);
begin
PlaySound(tr.memory, 0, SND_ASYNC or SND_MEMORY);
end;
|