다음을 통해 공유


WAVE 리소스 재생

[이 페이지와 연결된 기능인 Waveform Audio레거시 기능입니다. WASAPI오디오 그래프로 대체되었습니다. WASAPI오디오 그래프 Windows 10 및 Windows 11에 최적화되었습니다. 가능한 경우 새 코드에서 Waveform Audio대신 WASAPIAudio Graphs 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

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