PowerBuilder 10.5





Custom Class


속성과 함수를 캡슐화(encapsulation)하여 사용자에게 들어나지 않게 디자인한 유저오브젝트입니다.

개발자는 보이지 않는 컴포넌트로 구성된 프로세스 단위를 생성하여 유저오브젝트를 정의합니다.

보통 비즈니스 규칙같은 단위로 실행되는 프로세스를 정의합니다.

커스텀 클래스 유저오브젝트는 파워빌더 NonVisualObject 시스템 오브젝트를 상속받아 생성됩니다.



여기서는 소리 재생 기능을 가지고 있는 유저오브젝트를 커스텀 클래스로 만들어보겠습니다.



pb_study2 워크스페이스를 엽니다.


New화면 -> PB Object -> Custom Class를 선택합니다.

화면 하단의 Target 은 userobject로 선택합니다.





최초 화면이 열립니다.





이벤트, 함수, 변수를 정의할 수 있습니다.


먼저 변수선언뷰에서 Local External Functions 를 선택합니다.





여기에 다음 스크립트를 작성합니다.


FUNCTION uint waveOutGetNumDevs() LIBRARY "WINMM.DLL"

FUNCTION boolean sndPlaySoundA(string wavfile, uint flag) LIBRARY "WINMM.DLL" ALIAS FOR "sndPlaySoundA;ansi"


waveOutGetNumDevs()

는 소리재생장치인 사운드카드 개수를 반환합니다.

사운드카드 개수가 0 보다 크면 소리재생능력이 있다고 볼 수 있습니다.


sndPlaySoundA()

는 소리파일을 재생합니다.



만약 파워빌더9 이하 버전을 사용한다면 


FUNCTION boolean sndPlaySoundA(string wavfile, uint flag) LIBRARY "WINMM.DLL" ALIAS FOR "sndPlaySoundA;ansi"


이 부분을


FUNCTION boolean sndPlaySoundA(string wavfile, uint flag) LIBRARY "WINMM.DLL" ALIAS FOR "sndPlaySoundA"


이렇게 작성합니다.


;ansi 부분을 뺐습니다.




그리고 다음 함수를 정의합니다.




uf_sound 함수를 호출하면, 소리재생장치가 있을 때 sound.wav 파일을 재생합니다.


유저오브젝트를 uo_snd로 저장합니다.





sound.zip


sound.wav 파일을 압축한 파일입니다.

이 파일을 다운로드받아 압축을 풀어 소스 폴더로 이동시킵니다.





w_main을 엽니다.

화면 하단에 커맨트버튼을 만듭니다.

이름 cb_2는 그대로 두고 text를 uo_snd로 합니다.





cb_2의 clicked 이벤트를 엽니다.

다음과 같이 스크립트를 작성합니다.





어플리케이션을 실행하여 cb_2 버튼을 클릭해서 확인해 보십시오.




지금까지의 소스를 첨부합니다.


pb_study2.zip






수고하셨습니다.






Posted by A4M
,