Compartir a través de


Reproducir recursos WAVE

Puede usar la función PlaySound para reproducir un sonido almacenado como un recurso. Aunque esto también es posible mediante la función sndPlaySound , sndPlaySound requiere que encuentre, cargue, bloquee, desbloquee y libere el recurso; PlaySound logra todo esto con una sola línea de código.

Ejemplo de PlaySound

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

Ejemplo de sndPlaySound

La marca SND_MEMORY indica que el parámetro lpszSoundName es un puntero a una imagen en memoria del archivo WAVE. Para incluir un archivo WAVE como recurso en una aplicación, agregue la siguiente entrada al script de recursos de la aplicación (. RC) archivo.

soundName WAVE c:\sounds\bells.wav 

El nombre soundName es un marcador de posición para un nombre que proporcione para hacer referencia a este recurso WAVE. Los recursos WAVE se cargan y se accede a ellos igual que otros recursos de Windows definidos por la aplicación. La función PlayResource del ejemplo siguiente reproduce un recurso WAVE especificado.

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; 
} 

Para reproducir un recurso WAVE mediante esta función, pase a la función un puntero a una cadena que contenga el nombre del recurso, como se muestra en el ejemplo siguiente.

PlayResource("soundName");