[ 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);
}
///////////////////////////////////////////////////////////////////////////////////////////
-----------------------------------------------------------------------------------------------------------
실행 결과 아래와 같은 창이 나타난다.
다음번에는 위의 코드가 어떻게 이와같은 동작을 하는지 찬찬히 뜯어보겠다.
댓글
댓글 쓰기