wxCommandEvent와 중요 클래스


wxObject 클래스는 모든 wxWidgets 클래스들의 최상위 부모 클래스입니다. 참조 기반으로 객체를 관리할 수 있으며 메모리 생성 및 소멸에 사용되는 operator new와 operator delete 구현함으로써 정적 방식이든, 동적 방식이든 메모리 생성 및 소거에 따른 문제가 발생하지 않도록 설계되었습니다.

wxEvtHandler 클래스는 이벤트를 핸들링하는 클래스입니다. 이벤트를 발생시키거나 이벤트 핸들러를 호출하는 일련의 과정을 구현하고 있습니다. 따라서 wxWidgets 라이브러리의 이벤트 시스템을 사용하고 싶다면 필히 wxEvtHandler 클래스로부터 파생되어야 합니다.

wxWindow 클래스는 가시성을 담당하는 클래스로 모니터상에 시각적으로 표시되는 모든 요소들은 모두 wxWindow 클래스로부터 파생되어야 합니다.

wxPanel 클래스는 wxControl 클래스로부터 파생된 클래스를 레이어할 목적으로 설계된 컨테이터 윈도우입니다.

wxApp 클래스는 Top Level Window에 대한 목록을 보관하고 있으며, 모든 Top Level Window가 종료되면 실행이 중지됩니다.

wxButton 클래스나 wxMenu 클래스에서 발생한 이벤트는 대부분 직접 이벤트 핸들링에 대한 처리를 하지 않습니다.(원한다면 그렇게 할수도 있지만)

이벤트는 발생하지만 이벤트에 대한 처리를 부모 윈도우에 맡기도록 wxCommandEvent 형태로 이벤트를 전달하도록 기반 클래스인 wxEvtHandler에 구현되어 있습니다.

이벤트 테이블은 DECLARE_EVENT_TABLE()이라고 헤더 파일에 적어주고

BEGIN_EVENT_TABLE(MyFrame, wxFrame)
END_EVENT_TABLE()

을 cpp 파일에 적어주고 세부적인 이벤트를 등록해주면 됩니다. 이벤트 테이블은 wxEvtHandler 클래스로부터 파생된 클래스에서만 의미를 가집니다.

MyFrame.h
#pragma  once

#include  <wx/wx.h>
class  MyFrame:public  wxFrame
{
   enum{
      ID_QUIT=1,
      ID_HELP,
   };
public:
    MyFrame(const  wxString& title);
    ~MyFrame(void);

private:
   void OnQuit(wxCommandEvent& event);

   DECLARE_EVENT_TABLE()
};

MyFrame.cpp
#include  "MyFrame.h"
#include  <wx/button.h>

BEGIN_EVENT_TABLE(MyFrame, wxFrame)
   EVT_MENU(ID_QUIT,MyFrame::OnQuit)
   EVT_BUTTON(ID_QUIT,MyFrame::OnQuit)
END_EVENT_TABLE()



MyFrame::MyFrame(const  wxString& title)
    :wxFrame(NULL, wxID_ANY,title)
{

   wxMenu* menufile = new  wxMenu;
    menufile->Append(ID_QUIT,"&Quit\tCTRL+Q");
    menufile->Append(ID_HELP,"&Help\tCTRL+H");

   wxMenuBar* menuBar = new  wxMenuBar;
    menuBar->Append(menufile,"&File");
   this->SetMenuBar(menuBar);


   wxPanel* panel = new  wxPanel(this);
   wxButton* btn = new  wxButton(panel,ID_QUIT,"&Quit",wxPoint(100,100));

}


MyFrame::~MyFrame(void)
{
}


void 
MyFrame::OnQuit(wxCommandEvent& event){
   this->Close();
}

MyApp.h
#pragma  once

#include  <wx/wx.h>
class MyApp:public wxApp
{
public:
    MyApp(void);
    ~MyApp(void);

   virtual  bool OnInit();

};


DECLARE_APP(MyApp);

MyApp.cpp
#include  "MyApp.h"
#include  "MyFrame.h"

IMPLEMENT_APP(MyApp);

MyApp::MyApp(void)
{
}


MyApp::~MyApp(void)
{
}

bool
MyApp:: OnInit(){
   wxFrame* m = new  MyFrame("Hello Button");
    m->Show(true);

   return  true;
}

- 목록:

2 thoughts on “wxPaintDC 이해하기

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>