Condividi tramite


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");