API표시기
이 장에서 사용할 윈도우즈 API함수는 사운드카드를 작동시켜 소리를 내게하는 sndPlaySound함수를 사용하는 것이다. 다음 과정을 따라해보고, 숙달되면 다른 API함수도 사용해본다.
- windows의 시작메뉴에서 visual basic6.0그룹의 [microsoft visual basic6.0도구들-API텍스트뷰어]를 선택한다.
- API텍스트뷰어가 실행되면 [파일-텍스트 파일로드]를 선택한다.
- [파일열기]대화상자에서 win32api를 선택한다.
그러면 API표시기는 이 파일(txt)을 데이터베이스로 전환하면 더 빨리 실행시킬 수 있다는 메시지를 내보일 것이다. 대답으로 [예]를 선택한다. 만약, 이 메시지가 대화상자에 나오지 않는다면, 텍스트파일을 데이터베이스(DB)로 전환하기위해 [파일-텍스트를 데이터베이스로 전환]메뉴를 선택해 win32api.mdb로 전환시킨다. - 잠시후에 API표시기의 사용가능한 항목란에는 MDB로 변환된 상수, 선언문, 형식들 중에서 API선언문 형식들이 나열되어 나타난다. 여기에 나타난 선언문형식들은 윈도우즈API의 전체는 아니지만, 호출할 수 있는 거의 모든 것들이 제공되어 있다. 우리는 단지 원하는 선언문을 스크롤 바를 이용하여 찾아쓰기만 하면 된다.
- 사용가능한 항목리스트에서 sndPlaySound함수를 선택한다. 그리고, 선택된 항목란에서 이 선언문을 복사하기위해 [추가]버튼을 클릭한다.
- sndPlaySound함수가 항목선택란에 추가되면, [복사]버튼을 클릭하여 클립보드에 복사한 후, API표시기를 닫는다.
어플리케이션에서 API함수 이용
위에서는 [API표시기]를 통해 프로그램에서 필요한 선언문을 찾는 방법을 배웠다. 이 절에서는 복사한 sndPlaySound함수선언문을 어플리케이션에 연결시켜 사용하는 법을 배워본다. 다음 과정을 계속해서 따라해 보기 바란다.
- [표준exe]프로젝트를 실행시킨다.
- 코드창의 (일반)(선언)부에 가서, 복사한 sndPlaySound함수를 붙여넣기한다. 선언문의 길이가 길기때문에 연결표시줄(_)을 사용하여 코드를 보기좋게 만든다.
- 커서를 declare문 앞에 놓고, private키워드를 입력하여 넣는다. 이 키워드를 넣지 않으면 에러가 발생된다.
Option Explicit
Private Declare Function sndPlaySound Lib "winmm.dll" _
Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
- 폼 디자이너를 활성화시켜 다음과 같이 컨트롤을 배치하고, fileListBox컨트롤의 pattern속성을 *.wav라고 설정한다.
- 코드창을 열어 각 이벤트 프로시저에 다음 코드를 입력한다.
Private Sub Dir1_Change()
File1.Path = Dir1.Path '디렉토리가 변경되면 파일경로를 설정한다.
End SubPrivate Sub Drive1_Change()
Dir1.Path = Drive1.Drive '드라이브가 변경되면 디렉토리경로를 설정한다.
End SubPrivate Sub File1_Click()
Dim waveFile As String, rc As Long
waveFile = Dir1.Path & "\" & File1.FileName
rc = sndPlaySound(waveFile, 1) '선택한 웨이브파일을 작동시킨다.
End Sub
- 위에서 sndPlaySound함수를 어떻게 사용했는지 주목하기 바란다. 선언된 sndPlaySound함수의 리턴값이 long형이기 때문에 리턴변수 rc역시 long형으로 선언하였다. 사용된 매개변수 또한 선언된 함수와 일치하여야 한다.
- 프로젝트를 저장하고 실행모드에서 테스트한다.
정상적으로 코딩되었다면, 선택한 웨이브파일들의 소리를 들을 수 있을 것이다.