프로그래밍/조각코드
[wxWidgets] 기본 프레임웍 코드.
ngcbbs
2012. 4. 26. 17:43
아주 기초적인 프레임 생성 코드! wxFromBuilder 등에서 기본적인 배치및 이벤트 헨들러 지정을 해도 app 관련 코드는 생성해 주지 않으므로 일단 기본 코드가 있으면 좋다!...
#include "wx/wx.h"
//////////////////////////////////////////////////////////////////////////
// wxWidgets 최신 버전 다운로드
// http://www.wxwidgets.org/downloads/
// Current Stable Release: 2.9.3
// Previous Stable Release: 2.8.12
// * 다운로드 페이지에는 2.9.3 이 최신버전이 아니지만 2.9.3이 최신버전이 맞음.
// 다음 버전은 2.9.4 일것이고 다음은 2.9.5 혹은 3.0 으로 된것이라고 함.
// 3.0 에서는 윈도우 메트로 ui 도 지원할지도 모르겠음.(이건 추측)
//////////////////////////////////////////////////////////////////////////
// 컴파일 할때 설정해 줘야 하는것들 (비주얼 스튜디오 기준)
// * 추가 include 폴더 지정.
// [wxWidget폴더]/include
// [wxWidget폴더]/include/msvc
// * 추가 library 폴더 지정.
// [wxWidget폴더]/lib/vc_lib <- static lib 로 링크하는 경우.
// [wxWidget폴더]/lib/vc_dll <- dynamic dll 로 링크하는 경우. (해당 dll 을 실행파일 경로에 복사해줘야함)
//////////////////////////////////////////////////////////////////////////
// BaseFrame
class CBaseFrame : public wxFrame
{
public:
CBaseFrame(const wxString& title) : wxFrame(NULL, wxID_ANY, title)
{
/*
자식 윈도우의 이벤트 처리는 아래와 같은 형태로 직접 연결.
// Connect Events
mGridSizeCombo->Connect(wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler(NGCEditorFrame::OnSelected), NULL, this);
mGridSizeCombo->Connect(wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler(NGCEditorFrame::OnEnter), NULL, this);
*/
}
virtual ~CBaseFrame()
{
/*
자식 윈도우 이벤트 연결이 되었다면 윈도우 삭제시 연결 해제 해주자.
// Disconnect Events
mGridSizeCombo->Disconnect(wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler(NGCEditorFrame::OnSelected), NULL, this);
mGridSizeCombo->Disconnect(wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler(NGCEditorFrame::OnEnter), NULL, this);
*/
}
void OnSize(wxSizeEvent& event)
{
wxFrame::OnSize(event);
}
DECLARE_EVENT_TABLE()
};
// CBaseFrame 이벤트 헨들러 지정
BEGIN_EVENT_TABLE(CBaseFrame, wxFrame)
EVT_SIZE(CBaseFrame::OnSize)
END_EVENT_TABLE()
//////////////////////////////////////////////////////////////////////////
// BaseApp
class CBaseApp : public wxApp
{
public:
CBaseApp() : pFrame(0) {}
virtual ~CBaseApp() {}
bool OnInit()
{
if (!wxApp::OnInit())
return false;
pFrame = new CBaseFrame(wxT("기본윈도우"));
pFrame->SetClientSize(640, 480);
pFrame->Center();
pFrame->Show();
SetTopWindow(pFrame);
return true;
}
int OnRun()
{
return wxApp::OnRun();
}
int OnExit()
{
return wxApp::OnExit();
}
private:
CBaseFrame* pFrame;
};
// CBaseApp 구현부
IMPLEMENT_APP(CBaseApp)