반응형

wxFormBuilder로 만든 XRC 파일을 사용해 보자.

 

wxFormBuilder에서 Form에 버튼을 하나 배치하고 적당히 디자인한다.

 

XRC 파일을 저장한다. (gui.xrc)

 

#include <wx/wx.h>
#include <wx/xrc/xmlres.h>

#ifdef _DEBUG
#pragma comment(lib, "wxbase33ud_xml.lib")
#pragma comment(lib, "wxmsw33ud_xrc.lib")
#else
#pragma comment(lib, "wxbase33u_xml.lib")
#pragma comment(lib, "wxmsw33u_xrc.lib")
#endif

class MyApp : public wxApp {
public:
	bool OnInit() override;
};

wxIMPLEMENT_APP(MyApp);

class MyFrame : public wxFrame
{
public:
	MyFrame();
private:
	void OnButtonClicked(wxCommandEvent& event);
};

MyFrame::MyFrame() {
	// XRC 리소스 로드
	wxXmlResource::Get()->Load(wxT("gui.xrc")); // 생성한 xrc 파일명
	// Frame 로드
	wxXmlResource::Get()->LoadFrame(this, nullptr, wxT("MyFrame1")); // wxFormBuilder에서 설정한 Frame 이름
	// 컨트롤 바인딩 (이벤트 처리용)
	wxButton* button = static_cast<wxButton*>(FindWindowByName(wxT("btnSubmit"))); // wxFormBuilder에서 설정한 버튼 이름
	if (button) {
		button->Bind(wxEVT_BUTTON, &MyFrame::OnButtonClicked, this);
	}
}

void MyFrame::OnButtonClicked(wxCommandEvent& event) {
	wxMessageBox(wxT("Hello from XRC!"));
}

bool MyApp::OnInit() {
	wxInitAllImageHandlers();
	wxXmlResource::Get()->InitAllHandlers(); // XRC 핸들러 초기화

	MyFrame* frame = new MyFrame();
	frame->Show(true);
	return true;
}

 

버튼만 하나 배치하면 화면을 가득 채운다.

 

※ 참고

wxFormBuilder

 

반응형
Posted by J-sean
: