[ wxWidgets - 2 ] Sample Program


이전 wxWidgets - 1 에서 했던 것 처럼 창 편집기가 뜨게하면

코드 블럭이 알아서 창과 객체들에 대한 코드를 생성해 준다.


매우 편리하지만 처음 wxWidgets을 시작하는, 특히 처음 GUI를

다뤄보는 나에게 이렇게 생성된 코드는 도대체 어떻게 동작하는지

이해 할 수 없었다.


따라서, 프로젝트 생성 마지막 단계에서 아래와 같이 Create Empty Project 를

선택하여 창 편집기가 없는 빈 wxWidgets 프로젝트를 생성했다.




이후 File - New - Empty file 항목을 선택하고 이를 xxx.cpp 와 같은 형태로 저장했다.

이제, 이 cpp파일에 코드를 작성하면 되는데, 아직 아무것도 모르는 상태이니

예제 코드를 복사&붙여넣기 하여 컴파일해봤다.


------------------ 예제 코드 ----------------------------------------------------------------------------

#include "wx/wx.h"

//////////////////////////////// Class's /////////////////////////////////////

//Declare Application class
class MyApp : public wxApp
{
public:
    virtual bool OnInit();
};


class MyFrame : public wxFrame
{
public :
    MyFrame(const wxString &title);

    //Event Handlers
    void OnQuit( wxCommandEvent& event );
    void OnAbout( wxCommandEvent& event );

private :
    //This Class Handles Events
    DECLARE_EVENT_TABLE();
};

///////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////// Start Application /////////////////////////////////
//Implements MyApp & GetApp
DECLARE_APP(MyApp);

// Give wxWidgets the means to create a MyApp object
IMPLEMENT_APP(MyApp);

//Initialize the application
bool MyApp::OnInit()
{
    MyFrame *frame = new MyFrame( wxT("Minimal wxWidgets App") );
    frame->Show();
    return true;
}

///////////////////////////////////////////////////////////////////////////////////////////

////////////////////////// Define EVENT ////////////////////////////////////////

BEGIN_EVENT_TABLE(MyFrame,wxFrame)
    EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
    EVT_MENU(wxID_EXIT , MyFrame::OnQuit)
END_EVENT_TABLE()

void MyFrame::OnAbout( wxCommandEvent& event )
{
    wxString msg;

    msg.Printf( wxT("Hello and welcome to %s") , wxVERSION_STRING );

    wxMessageBox(msg, wxT("About Minimal"), wxOK | wxICON_INFORMATION, this);
}

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

///////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////  Make Frame  ////////////////////////////////////////

MyFrame::MyFrame( const wxString& title )
        : wxFrame(NULL, wxID_ANY, title)
{
    // Create a menu
    wxMenu *fileMenu = new wxMenu;
    wxMenu *helpMenu = new wxMenu;

    helpMenu->Append(wxID_ABOUT, wxT("&About...\tF1"),wxT("Show about dialog"));
    fileMenu->Append(wxID_EXIT, wxT("E&xit\tAlt-X"),wxT("Quit this program"));

    // Create menu bar
    wxMenuBar *menuBar = new wxMenuBar();

    menuBar->Append(fileMenu, wxT("&File"));
    menuBar->Append(helpMenu, wxT("&Help"));

    SetMenuBar( menuBar );

    // Create Status Bar
    CreateStatusBar(2);
    SetStatusText(wxT("Welcome to wxWidgets!"),1);
}


///////////////////////////////////////////////////////////////////////////////////////////


-----------------------------------------------------------------------------------------------------------


실행 결과 아래와 같은 창이 나타난다.

다음번에는 위의 코드가 어떻게 이와같은 동작을 하는지 찬찬히 뜯어보겠다.





댓글