Riproduzione di risorse WAVE
È possibile usare la funzione PlaySound per riprodurre un suono archiviato come risorsa. Anche se ciò è possibile anche usando la funzione sndPlaySound , sndPlaySound richiede di trovare, caricare, bloccare, sbloccare e liberare la risorsa; PlaySound ottiene tutto questo con una singola riga di codice.
Esempio di PlaySound
PlaySound("SoundName", hInst, SND_RESOURCE | SND_ASYNC);
Esempio di sndPlaySound
Il flag SND_MEMORY indica che il parametro lpszSoundName è un puntatore a un'immagine in memoria del file WAVE. Per includere un file WAVE come risorsa in un'applicazione, aggiungere la voce seguente allo script di risorsa dell'applicazione (. RC) file.
soundName WAVE c:\sounds\bells.wav
Il nome soundName è un segnaposto per un nome fornito per fare riferimento a questa risorsa WAVE. Le risorse WAVE vengono caricate e accessibili esattamente come altre risorse Windows definite dall'applicazione. La funzione PlayResource nell'esempio seguente riproduce una risorsa WAVE specificata.
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;
}
Per riprodurre una risorsa WAVE usando questa funzione, passare alla funzione un puntatore a una stringa contenente il nome della risorsa, come illustrato nell'esempio seguente.
PlayResource("soundName");