Playing WAVE Resources

You can use the PlaySound function to play a sound that is stored as a resource. Although this is also possible using the sndPlaySound function, sndPlaySound requires that you find, load, lock, unlock, and free the resource; PlaySound achieves all of this with a single line of code.

PlaySound Example

PlaySound("SoundName", hInst, SND_RESOURCE | SND_ASYNC);

sndPlaySound Example

The SND_MEMORY flag indicates that the lpszSoundName parameter is a pointer to an in-memory image of the WAVE file. To include a WAVE file as a resource in an application, add the following entry to the application's resource script (.RC) file.

soundName WAVE c:\sounds\bells.wav

The name soundName is a placeholder for a name that you supply to refer to this WAVE resource. WAVE resources are loaded and accessed just like other application-defined Windows resources. The PlayResource function in the following example plays a specified WAVE resource.

BOOL PlayResource(LPSTR lpName)


BOOL bRtn;

LPSTR lpRes;

HANDLE hResInfo, hRes;

// Find the WAVE resource.

hResInfo = FindResource(hInst, lpName, "WAVE");

if (hResInfo == NULL)

return FALSE;

// Load the WAVE resource.

hRes = LoadResource(hInst, hResInfo);

if (hRes == NULL)

return FALSE;

// Lock the WAVE resource and play it.

lpRes = LockResource(hRes);

if (lpRes != NULL) {

bRtn = sndPlaySound(lpRes, SND_MEMORY | SND_SYNC |





bRtn = 0;

// Free the WAVE resource and return success or failure.


return bRtn;


To play a WAVE resource by using this function, pass to the function a pointer to a string containing the name of the resource, as shown in the following example.


Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
Unix Manual Pages
Delphi Examples