![]() |
![]() |
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(“SoundName”, hInst, SND_RESOURCE | SND_ASYNC);
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 | SND_NODEFAULT); UnlockResource(hRes); } else bRtn = 0; // Free the WAVE resource and return success or failure. FreeResource(hRes); 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.
PlayResource("soundName");
© 1997 Microsoft Corporation. All rights reserved. Legal Notices.