Freigeben über


Wiedergeben von WAVE-Ressourcen

Sie können die PlaySound-Funktion verwenden, um einen Sound wiederzugeben, der als Ressource gespeichert ist. Obwohl dies auch mit der sndPlaySound-Funktion möglich ist, erfordert sndPlaySound , dass Sie die Ressource finden, laden, sperren, entsperren und freigeben; PlaySound erreicht all dies mit einer einzigen Codezeile.

PlaySound-Beispiel

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

sndPlaySound-Beispiel

Das flag SND_MEMORY gibt an, dass der lpszSoundName-Parameter ein Zeiger auf ein In-Memory-Image der WAVE-Datei ist. Um eine WAVE-Datei als Ressource in eine Anwendung einzuschließen, fügen Sie dem Ressourcenskript der Anwendung () den folgenden Eintrag hinzu. RC)-Datei.

soundName WAVE c:\sounds\bells.wav 

Der Name soundName ist ein Platzhalter für einen Namen, den Sie angeben, um auf diese WAVE-Ressource zu verweisen. WAVE-Ressourcen werden wie andere anwendungsdefinierte Windows-Ressourcen geladen und aufgerufen. Die PlayResource-Funktion im folgenden Beispiel gibt eine angegebene WAVE-Ressource ab.

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

Um eine WAVE-Ressource mit dieser Funktion wiederzugeben, übergeben Sie an die Funktion einen Zeiger auf eine Zeichenfolge, die den Namen der Ressource enthält, wie im folgenden Beispiel gezeigt.

PlayResource("soundName");