본문 바로가기

Window Programming/VB

VB :: API함수 사용예제

API표시기

이 장에서 사용할 윈도우즈 API함수는 사운드카드를 작동시켜 소리를 내게하는 sndPlaySound함수를 사용하는 것이다. 다음 과정을 따라해보고, 숙달되면 다른 API함수도 사용해본다.

  1. windows의 시작메뉴에서 visual basic6.0그룹의 [microsoft visual basic6.0도구들-API텍스트뷰어]를 선택한다.
  2. API텍스트뷰어가 실행되면 [파일-텍스트 파일로드]를 선택한다.

  1. [파일열기]대화상자에서 win32api를 선택한다.
    그러면 API표시기는 이 파일(txt)을 데이터베이스로 전환하면 더 빨리 실행시킬 수 있다는 메시지를 내보일 것이다. 대답으로 [예]를 선택한다. 만약, 이 메시지가 대화상자에 나오지 않는다면, 텍스트파일을 데이터베이스(DB)로 전환하기위해 [파일-텍스트를 데이터베이스로 전환]메뉴를 선택해 win32api.mdb로 전환시킨다.
  2. 잠시후에 API표시기의 사용가능한 항목란에는 MDB로 변환된 상수, 선언문, 형식들 중에서 API선언문 형식들이 나열되어 나타난다. 여기에 나타난 선언문형식들은 윈도우즈API의 전체는 아니지만, 호출할 수 있는 거의 모든 것들이 제공되어 있다. 우리는 단지 원하는 선언문을 스크롤 바를 이용하여 찾아쓰기만 하면 된다.
  3. 사용가능한 항목리스트에서 sndPlaySound함수를 선택한다. 그리고, 선택된 항목란에서 이 선언문을 복사하기위해 [추가]버튼을 클릭한다.

  1. sndPlaySound함수가 항목선택란에 추가되면, [복사]버튼을 클릭하여 클립보드에 복사한 후, API표시기를 닫는다.

어플리케이션에서 API함수 이용

위에서는 [API표시기]를 통해 프로그램에서 필요한 선언문을 찾는 방법을 배웠다. 이 절에서는 복사한 sndPlaySound함수선언문을 어플리케이션에 연결시켜 사용하는 법을 배워본다. 다음 과정을 계속해서 따라해 보기 바란다.

  1. [표준exe]프로젝트를 실행시킨다.
  2. 코드창의 (일반)(선언)부에 가서, 복사한 sndPlaySound함수를 붙여넣기한다. 선언문의 길이가 길기때문에 연결표시줄(_)을 사용하여 코드를 보기좋게 만든다.
  3. 커서를 declare문 앞에 놓고, private키워드를 입력하여 넣는다. 이 키워드를 넣지 않으면 에러가 발생된다.

Option Explicit
Private Declare Function sndPlaySound Lib "winmm.dll" _
Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

  1. 폼 디자이너를 활성화시켜 다음과 같이 컨트롤을 배치하고, fileListBox컨트롤의 pattern속성을 *.wav라고 설정한다.

  1. 코드창을 열어 각 이벤트 프로시저에 다음 코드를 입력한다.

Private Sub Dir1_Change()
    File1.Path = Dir1.Path              '디렉토리가 변경되면 파일경로를 설정한다.
End Sub

Private Sub Drive1_Change()
    Dir1.Path = Drive1.Drive            '드라이브가 변경되면 디렉토리경로를 설정한다.
End Sub

Private 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형으로 선언하였다. 사용된 매개변수 또한 선언된 함수와 일치하여야 한다.
  1. 프로젝트를 저장하고 실행모드에서 테스트한다.

정상적으로 코딩되었다면, 선택한 웨이브파일들의 소리를 들을 수 있을 것이다.