[ wxWidgets - 3 ] 예제 분석
- class MyApp : public wxApp
- 어플리케이션 클래스에 대한 정의이다.
- wxWidget은 객체들을 wxOOO 와 같은 형태로 제공하고 있다.
- 이것을 나의 프로그램에 가져다 쓰는 방법은 위의 정의코드처럼
- 상속을 통한 자식클래스를 만드는 것이다.
- 버튼과같은 작은 객체들은 이런방법을 통하지 않아도 상관없으나
- MyApp 이라는 클래스는 그 이름그대로 "내가지금 만드는 어플리케이션"
- 이라는 의미가 있고, 별도의 기능( OnInit )을 정의해야하기 때문에
- 자식 클래스를 만드는것이 당연한 것 같다.
- 여기서 OnInit() 함수는 일반 C 프로그램에서 main()과 유사한 역할을 한다고 한다.
- 프로그램을 시작했을때, 가장 먼저 실행된다는 것이다.
- ** DECLARE_APP( MyApp ), IMPLEMENT_APP( MyApp ) 이라는 매크로를
- 통해 MyApp객체를 실제로 선언해주어야 한다.
- class MyFrame : public wxFrame
- wxFrame 이란 실제로 눈에 보이는 프로그램의 '창'이라고 보면 적절한데,
- 알아본 결과 wxWindow 로부터 상속받아 내려오는 클래스임을 알 수 있었다.
- 그냥 wxWindow를 사용하면 되지않나? 라는 생각이 들었으나
- 실험을 해보진 못했고,귀찮아서 그냥 넘어간 부분이다. 언제한번 확인해둬야 겠다.
- 여기서 중요한것은, 클래스 내부에 정의된 함수들과 매크로이다.
- public :MyFrame(const wxString &title);//Event Handlersvoid OnQuit( wxCommandEvent& event );void OnAbout( wxCommandEvent& event );private ://This Class Handles EventsDECLARE_EVENT_TABLE();
- 이 부분인데, 주석으로 처리된 Event Handlers 가 눈에 띈다.
- 즉, OnQuit(..), OnAbout(..) 함수가 "이벤트 핸들러" 라는 것이다.
- 여기서 이벤트 핸들러의 개념을 대략 잡고 갈 수 있는데,
- 내가 이해하기로는 특정 이벤트( 마우스클릭과 같은 )가 발생하면
- 실행되는 함수라는 것이다.
- 즉, 저기보이는 OnQuit 함수는 Quit이라는 메뉴를 선택했을때 실행되는
- 함수이고, OnAbout은 About 메뉴를 선택하면 실행되는 함수이다.
- 그럼 이 " 이벤트 <-> 핸들러(함수) " 연결은 어떻게 만들어 주느냐하니
- 아래와 같이 정의한 부분이 보인다.
BEGIN_EVENT_TABLE(MyFrame,wxFrame)
EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
EVT_MENU(wxID_EXIT , MyFrame::OnQuit)
END_EVENT_TABLE()
- MyFrame 내부에서 DECLARE_EVENT_TABLE(); 로 선언된 이벤트 테이블을
- 정의하고 있음을 알 수 있다.
- 이와같이 이벤트를 사용할 수 있는데, 이것은 가장 기본적인 사용법인듯 하고
- 동적인 이벤트 사용법이나 자신만의 이벤트를 만들어 쓰는 심화된 이벤트의
- 사용법들이 있다고 한다.
- 이것은 다음번에 공부하기로 하고, 오늘의 공부는 여기서 마친다.
- 나머지 코드들은 그냥 읽어보면 객체를 생성하고 이름을 설정한다거나
- 글자를 보여준다거나 하는 간단한 내용이어서 쉽게 이해할 수 있었으므로
- 궂이 여기다 쓰진 않는다.
댓글
댓글 쓰기