Reproduzindo recursos WAVE

Você pode usar a função PlaySound para reproduzir um som armazenado como um recurso. Embora isso também seja possível usando a função sndPlaySound , sndPlaySound requer que você encontre, carregue, bloqueie, desbloqueie e libere o recurso; PlaySound consegue tudo isso com uma única linha de código.

Exemplo de PlaySound

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

Exemplo de sndPlaySound

O sinalizador SND_MEMORY indica que o parâmetro lpszSoundName é um ponteiro para uma imagem na memória do arquivo WAVE. Para incluir um arquivo WAVE como um recurso em um aplicativo, adicione a seguinte entrada ao script de recurso do aplicativo (. Arquivo RC).

soundName WAVE c:\sounds\bells.wav 

O nome soundName é um espaço reservado para um nome que você fornece para se referir a esse recurso WAVE. Os recursos WAVE são carregados e acessados da mesma forma que outros recursos do Windows definidos pelo aplicativo. A função PlayResource no exemplo a seguir reproduz um 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 reproduzir um recurso WAVE usando essa função, passe para a função um ponteiro para uma cadeia de caracteres que contém o nome do recurso, conforme mostrado no exemplo a seguir.

PlayResource("soundName");