다음을 통해 공유


WAVE 리소스 재생

PlaySound 함수를 사용하여 리소스로 저장된 소리를 재생할 수 있습니다. sndPlaySound 함수를 사용할 수도 있지만 sndPlaySound를 사용하려면 리소스를 찾고, 로드하고, 잠그고, 잠금 해제하고, 해제해야 합니다. PlaySound는 한 줄의 코드로 이 모든 것을 달성합니다.

PlaySound 예제

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

sndPlaySound 예제

SND_MEMORY 플래그는 lpszSoundName 매개 변수가 WAVE 파일의 메모리 내 이미지에 대한 포인터임을 나타냅니다. WAVE 파일을 애플리케이션에 리소스로 포함하려면 애플리케이션의 리소스 스크립트()에 다음 항목을 추가합니다. RC) 파일.

soundName WAVE c:\sounds\bells.wav 

soundName 이름은 이 WAVE 리소스를 참조하기 위해 제공하는 이름의 자리 표시자입니다. WAVE 리소스는 다른 애플리케이션 정의 Windows 리소스와 마찬가지로 로드되고 액세스됩니다. 다음 예제의 PlayResource 함수는 지정된 WAVE 리소스를 재생합니다.

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

이 함수를 사용하여 WAVE 리소스를 재생하려면 다음 예제와 같이 리소스 이름이 포함된 문자열에 대한 포인터를 함수에 전달합니다.

PlayResource("soundName");