HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Erőforrásként tárolt hang lejátszása


Példaprogram letöltése

123762 bájt

A Windows-ban a hangminták tárolásának legelterjedtebb, mondhatni szabványos módja a WAV fájl. Ezen fájlok lejátszása Windows API függvények segítségével lehetséges .Ebben a példában azt vizsgáljuk meg, hogy hogyan tudunk egy WAV fájlt erőforrásként eltárolni az EXE fájlba, és onnan lejátszani anélkül, hogy megint elmentenénk egy WAV fájlba.

Ahhoz, hogy egy WAV fájlt erőforrásként tudjunk tárolni, ugyanúgy járhatunk el, mint más típusú adatok esetében. Készítünk tehát egy olyan szöveges fájlt, amelynek a kiterjesztése .rc, és ezt hozzáadjuk a project-ünkhöz. Ebben a fájlban sorolhatjuk fel az erőforrásként az EXE-ben tárolni kívánt adatfájlokat. A szövegfájl minden sora egy-egy erőforrás adatait tartalmazza. A sorban az első adat az erőforrás neve lesz, majd szóköz után a típus, illetve szintén szóköz után az erőforrás fájl neve következik, ahogy ez az alábbi példában is látszik (resource.rc):
TESTSND WAVE TestSnd.wav
Ha a project-et lefordítjuk, akkor kapunk egy resource.res nevű fájlt (a resource.res a példában használt fájl, itt csak a kiterjesztés a lényeges). Ez a fájl tartalmazza a hangmintát, és a fordítás után ez belekerül az EXE fájlba. Ezt akár ellenőrizhetjük is egy erre alkalmas programmal (pl. ilyen a Delphi demók között megtalálható Resource Explorer).
A hangminta tehát már benne van az EXE-ben, már csak ki kell onnan olvasni, és le kell játszani. Első lépésben szükségünk lesz az erőforrás leírójára (azonosítójára), amit a FondResource függvénnyel kérdezhetünk le.
var
  h: THandle;
begin
  h:=FindResource(HInstance, 'TESTSND', 'WAVE');
Ha a függvény visszatérési értéke (h) nem 0, akkor megkaptuk a leírót, aminek segítségével beolvassuk az erőforrást a memóriába. Ehhez a LoadResource függvényt fogjuk használni, aminek visszatérési értéke szintén egy azonosító, vagy 0, ha a művelet nem sikerült.
Lock-oljuk az erőforrást a memóriában a LockResource függvénnyel, ami visszaadja az erőforrás memóriacímét. Erre a címre lesz szükségünk az sndPlaySound függvényhez, ami lejátssza a hangot.
sndPlaySound
Osztály:
BOOL sndPlaySound(
LPCSTR lpszSound,
UINT fuSound
);
Ez a függvény lejátssza a paraméterként megadott WAV fájlt.
Paraméterek
LPCSTR lpszSound
Ebben a paraméterben adhatjuk meg a WAV hangminta memóriacímét, vagy a fájl nevét.
UINT fuSound
A lejátszás tulajdonságait állíthatjuk be ebben a paraméterben, az alábbi konstansok segítségével:
Konstans Leírás
SND_ASYNC A hangot aszinkron módon játssza le, vagyis a hangminta lejátszásának megkezdése után azonnal visszatér. Az ilyen módon lejátszott hangmintát úgy tudjuk megállítani (kikapcsolni), hogy meghívjuk a függvényt az lpszSoundName paraméterben nil-t adva meg.
SND_LOOP A hangmintát folyamatosan ismétli, amíg az SND_ASYNC konstansnál bemutatott módon le nem állítjuk.
SND_MEMORY Az lpszSound paraméterben a WAV hangminta memóriacímét adjuk meg. A hangminta tehát a memóriában található.
SND_NODEFAULT Ha a hangminta nem található meg, akkor a függvény visszatér anélkül, hogy az alapértelmezett hangot játszaná le.
SND_NOSTOP Ha egy hangminta éppen lejátszás alatt van, akkor a függvény visszatér anélkül, hogy lejátszaná a megadott hangmintát.
SND_SYNC A függvény addig nem tér vissza, amíg a hangmintát le nem játszotta.
Visszatérési érték
A visszatérési érték igaz, ha a lejátszás sikeres volt, és hamis, hanem.

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 241. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |