관리 메뉴

드럼치는 프로그래머

[API/MFC] Sndplaysound 함수 본문

★─Programing/☆─API | MFC

[API/MFC] Sndplaysound 함수

드럼치는한동이 2008. 5. 15. 23:11
Sndplaysound는 간단하고 사용법도 쉬워서 많이 쓰십니다.. 아닌가? 나만 쓰나?

Sndplaysound를 쓸 때에 모듈에

Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long 'lpszSoundName는 사운드 경로입니다. uFlags는 사운드를 재생시킬 때의 모드입니다.

쓰고 폼에 사운드이벤트를 발생시킬 부분에(모르시는 분들을 위하여 Sndplaysound의 사용법 : sndPlaySound [사운드경로],[재생모드])

sndPlaySound App.Path + "\예제.WAV", &O1

간단하게 요렇게 적어도 되기는 됩니다만..

좀더 고급기능들을 사용하기 위해서 아래와 같은 코드를 추가해 줄 필요가 있습니다.

Public Const SND_SYNC = &H0
Public Const SND_ASYNC = &H1
Public Const SND_NODEFAULT = &H2
Public Const SND_LOOP = &H8
Public Const SND_NOSTOP = &H10

"아니 이거 추가해줘서 뭐하는데요?" 생각하신다면 지금부터 하나하나 천천히 배워보도록 하죠. 빙긋빙긋

우선

SND_ASYNC는 사용자가 지정한 사운드가 플레이중일 때 언제든지 중지시킬 수 있게 하는 겁니다.
또하나로 이건 재생시키고 코드창에서 바로 다음코드로 넘어갑니다.

반대로

SND_SYNC는 사용자가 지정한 사운드가 플레이중일 때 중지시킬 수 없게 하는 겁니다.
역시나 이건 사운드가 재생을 끝마쳐야만 코드창에서 바로 다음코드로 넘어갑니다.

그리고

SND_NODEFAULT는 사용자가 지정한 경로에 사운드파일이 없을 때에도 경고음소리가 들리지 않게하는 겁니다.
이 모드를 안하면 경로에 파일이 없을 시에 비프음이 들리며 경고음이 나옵니다.

또 하나

SND_LOOP는 이건 말그대로 반복입니다. 무한반복이요.
이것은 아마도 배경음악 같은 것에 유용하게 쓰일 수 있을 것 같습니다.

SND_NOSTOP은
사운드가 재생될 때에 현재사운드를 중지시키지 않고 다른 사운드도 같이 재생시킬 수 있습니다.
예로 이미 사운드가 재생중일 때, 이전 사운드를 중지시키지 않고 재생시키는 겁니다. 한마디로 다중재생이라고 보시면 좋겠습니다.

사운드를 재생시킬 때는  sndPlaySound App.Path + "\예제.WAV", SND_ASYNC 이런 식으로 하시면 됩니다.

자.. 이제 저 모듈의 역할이 무엇인지 배웠습니다.

그럼 다음으로 사용법이자 팁을 가르켜드리지요.

변수로 해서 재생시켜 주셔야 합니다.

a = sndPlaySound (App.Path + "\예제.WAV",SND_ASYNC)

# a는 아무 변수형으로 지정해주셔도 상관없습니다.

그럼 재생중지는 어떻게 할까요?

a = sndPlaySound (vbStringNull, SND_ASYNC)

요렇게 하시면 됩니다. 재생중지가 됩니다. 각각의 변수를 지정하여 재생시키셔야만 각각의 사운드를 제어시킬 수 있습니다.

아 그리고 만약 나는 SND_NOSTOP과 SND_ASYNC를 동시에 사용하고 싶다면
sndPlaySound App.Path + "\예제.WAV", SND_NOSTOP OR SND_ASYNC
이런 식으로 논리 연산자를 사용하여 주시면 됩니다.

혹시 위에 상수선언이 귀찮으신 분들은 그냥
sndPlaySound App.Path + "\예제.WAV", &H1

이번 강좌는 여기까지 입니다. 감사합니다.

출처 : Tong - 삼초의여유님의 플그래밍...VB통

Comments