2010년 11월 26일 금요일

API로 WAV파일을 재생시켜보자...

Resource Files(리소스파일)에서 오른쪽 버튼>>Add(추가)>>Resource(리소스)>>Import(가져오기(?))>>원하는 사운드wave 고르기>>resource.h에서 define 무엇으로 되어있나 확인>>소스파일에서 #include"resource.h"하고 소리재생에 필요한 헤더파일 인클루드 하고 (windows먼저인클루드)>>PlaySound(MAKEINTRESOURCE(IDR_WAVE1), NULL, SND_RESOURCE );와 같이 재생
예>>
#include<windows.h>
#include<mmsystem.h>
#include"resource.h"
#pragma comment (lib,"winmm")
int main()

{
      PlaySound(MAKEINTRESOURCE(IDR_WAVE1), NULL, SND_RESOURCE );
}


// sndPlaySound 함수를 사용하려면 mmsystem.h 파일을 include 시켜야 하며
// 메뉴에서 Project -> Settings를 선택하면 project setting 대화상자가 출력되는데
// 이 대화상자에서 link 탭의 Object/library modules : 입력란에 winmm.lib 를 등록한다.


1. 특정 경로에 있는 wave 파일을 한번만 실행시키려면 아래와 같이 사용하면 된다.
   // sndPlaySound 함수에서 wave 파일을 실행시킬 모드 종류
    // SND_ASYNC : 지정한 wave 파일이 실행될 때 언제든지 중지시킬 수 있다.
    // SND_LOOP : 지정한 wave 파일이 무한반복으로 실행된다.
    // SND_MEMORY : 사운드가 메모리에 있다.
    // SND_NODEFAULT : 지정한 경로에 wave 파일이 없어도 경고음이 나오지 않게한다.
    // SND_NOSTOP : wave 파일이 실행될 때 다른 사운드로 같이 재생시킬 수 있다.
    // SND_SYNC   : 지정한 wave 파일이 실행될 때 중지시킬 수 없다.
    sndPlaySound("c:\\temp\\test.wav", SND_ASYNC);

2. 특정 경로에 있는 wave 파일을 반복해서 실행시키려면 아래와 같이 사용하면 된다.
    sndPlaySound("c:\\temp\\test.wav", SND_ASYNC | SND_LOOP);
    // 반복해서 실행되는 소리를 중지하고 싶다면 중지하고 싶은 위치에 아래의 함수를 호출한다.    sndPlaySound(NULL, SND_ASYNC);
--------------------------------------------------------------------------------------------------------------
winmm.lib를 사용하기 위해 Project Settings 대화상자에 이름을 명시해도 되고 전처리기를 
사용하여 아래와 같이 사용하셔도 됩니다. 
#pragma comment(lib, "winmm.lib") 
전처리기는 헤더파일 인클루드 하는 아래쪽에서 사용하시면 됩니다.
--------------------------------------------------------------------------------------------------------------

댓글 없음:

댓글 쓰기