ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [wxWidgets] 기본 프레임웍 코드.
    프로그래밍/조각코드 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)
    
    
Designed by Tistory.