이벤트 핸들러 추적 과정


MyTextCtrl.h
#pragma  once

#include  <wx/wx.h>
class  MyTextCtrl:public  wxTextCtrl
{
public:
    MyTextCtrl(wxWindow *parent, wxWindowID id,
            const  wxString& value = wxEmptyString,
            const  wxPoint& pos = wxDefaultPosition,
            const  wxSize& size = wxDefaultSize,
            long style = 0,
            const  wxValidator& validator = wxDefaultValidator,
            const  wxString& name = wxTextCtrlNameStr);

    ~MyTextCtrl(void);
private:
   void OnChar(wxKeyEvent& event);

   DECLARE_EVENT_TABLE()
};

MyTextCtrl.cpp
#include  "MyTextCtrl.h"


BEGIN_EVENT_TABLE(MyTextCtrl,wxTextCtrl)
    EVT_CHAR(  MyTextCtrl::OnChar)
END_EVENT_TABLE()

MyTextCtrl::MyTextCtrl(wxWindow *parent, wxWindowID id,
               const wxString& value,
               const wxPoint& pos,
               const wxSize& size,
               long style,
               const wxValidator& validator,
               const wxString& name )
             :wxTextCtrl(    parent,id,value,pos,size,style,validator,name)
{
}


MyTextCtrl::~MyTextCtrl(void)
{
}

void
MyTextCtrl::OnChar(wxKeyEvent& event){
   if( ::isalpha( event.GetKeyCode()) ){
      event.Skip(true);
   }  
}

MyFrame.h
#pragma  once
#include  <wx/wx.h>

class  MyFrame:public  wxFrame
{
public:
    MyFrame(const  wxString& title);
    ~MyFrame(void);
private:
   void OnClose(wxCloseEvent& event);

   DECLARE_EVENT_TABLE()
};

MyFrame.cpp
#include  "MyFrame.h"   
#include  "MyTextCtrl.h"

BEGIN_EVENT_TABLE(MyFrame, wxFrame)
   EVT_CLOSE( MyFrame::OnClose)
END_EVENT_TABLE()


MyFrame::MyFrame(const  wxString& title)
    :wxFrame(NULL, wxID_ANY, title)
{
    wxPanel* panel = new  wxPanel(this);
   wxTextCtrl* text = new  MyTextCtrl(panel,wxID_ANY,"",wxPoint(10,10));
}


MyFrame::~MyFrame(void)
{
}


void 
MyFrame::OnClose(wxCloseEvent& event){
   wxMessageDialog* dial = new  wxMessageDialog(NULL, "정말  닫으시겠습니까?","Exit",wxYES_NO);
   int ret = dial->ShowModal();
    dial->Destroy();

   if( wxID_NO==ret){
      event.Veto();
      return;
   }

   this->Destroy();
}

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("Text Control 2");
    m->Show(true);
   return  true;
}

- 목록:

3 thoughts on “wxPaintDC 이해하기

  1. 공유해주신 동영상에서 많은 것을 배우고 있습니다. 감사합니다.
    윈도우에서 GUI 프로그래밍을 가끔 하지만, RAD 툴에서 만들어주는 코드를 약간 변형하는 정도입니다.
    동영상을 보다보니, 툴이 생성해주는 코드들에 대해 좀 더 이해할 수 있을 것 같습니다.
    wxSmith 를 이용하여 wxWidget 를 사용하려 알아보는 중인데, 설명을 들으니 wxSmith 나 wxFormWBuilder 가 해주는 일을 약간은 이해할 수 있게 된 것 같습니다. 해당 툴을 사용하는데 많은 도움이 될 것 같습니다.
    좋은 강좌에 감사드립니다.

Leave a Reply to rsh Cancel 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>