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 신선봉(닉네임)

댓글을 달아 주세요

  1. 파빌초보 2017.08.18 15:29 신고  댓글주소  수정/삭제  댓글쓰기

    강의 잘 보고 있습니다.

    질문이 있어요.

    저런 윈도우 외부 함수 리스트는 어디서 파악할 수 있나요?

    • Favicon of http://all4museum.tistory.com BlogIcon 신선봉(닉네임) 2017.08.18 15:33 신고  댓글주소  수정/삭제

      윈도우OS에서 제공하는 함수입니다.
      win api 라는 언어체계가 따로 존재하구요.

      함수 목록은 다음 링크를 참조하세요.

      https://msdn.microsoft.com/ko-kr/library/windows/desktop/ff818516(v=vs.85).aspx

  2. 처음부터 2018.06.22 14:25 신고  댓글주소  수정/삭제  댓글쓰기

    오랜동안 사용 안 하던 개발을 다시 시작 하려고 하니까 막막 하였는데...
    많은 도움이 되었습니다..
    감사 합니다.



티스토리 툴바