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):
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.