아주 기초적인 프레임 생성 코드! 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)

Posted by ngcbbs
,