Featured image of post wxWidgets 사용법: 설치 방법부터 샘플 프로젝트 생성까지

wxWidgets 사용법: 설치 방법부터 샘플 프로젝트 생성까지

C++의 크로스 플랫폼 GUI 라이브러리 'wxWidgets'의 설치 절차부터 Visual Studio를 사용한 샘플 프로젝트 생성 방법까지 초보자를 위해 알기 쉽게 해설합니다.

wxWidgets란

wxWidgets는 Windows, Mac, Linux, Android, iOS 등의 플랫폼에서 동작하는 C++ GUI 라이브러리입니다.

wxWidgets 설치

  1. https://www.wxwidgets.org/downloads/ 를 열어 Windows Installer를 다운로드합니다.
  2. wxMSW-3.2.2.1-Setup.exe를 실행하여 설치합니다.
  3. 설치된 폴더에서 “C:\wxWidgets-3.2.2.1\build\msw\wx_vc17.sln"을 엽니다.
  4. wx_vc17.sln을 열고 빌드>일괄 빌드를 선택합니다.
  5. 모두 선택 버튼을 누르고, 리빌드 버튼을 누릅니다.
  6. 빌드가 완료되면 일단 Visual Studio를 닫습니다.

샘플 프로젝트 생성

  1. Visual Studio를 엽니다.
  2. 파일>새로 만들기>프로젝트를 선택합니다.
  3. Windows 데스크톱 애플리케이션 (탭이 C++, Windows, 데스크톱)을 선택합니다.
  4. 프로젝트 이름에 wxWidgetsSample을 입력합니다.
  5. 만들기를 클릭합니다.
  6. wxWidgetsSample을 우클릭하고 속성을 선택합니다.
  7. 구성 속성>C/C++>추가 포함 디렉터리에 C:\wxWidgets-3.2.2.1\include와 C:\wxWidgets-3.2.2.1\include\msvc를 추가합니다.
  8. 구성 속성>링커>추가 라이브러리 디렉터리에 C:\wxWidgets-3.2.2.1\lib\vc_x64_lib를 추가합니다.
  9. wxWidgetsSample.cpp를 열고 다음 코드로 교체합니다.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

#include <wx/wxprec.h>

#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif

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

class MyFrame : public wxFrame
{
public:
	MyFrame();
private:
	void OnHello(wxCommandEvent& event);
	void OnExit(wxCommandEvent& event);
	void OnAbout(wxCommandEvent& event);
};

enum
{
	ID_Hello = 1
};

wxIMPLEMENT_APP(MyApp);

bool MyApp::OnInit()
{
	MyFrame* frame = new MyFrame();
	frame->Show(true);
	return true;
}

MyFrame::MyFrame()
	: wxFrame(NULL, wxID_ANY, "Hello World")
{
	wxMenu* menuFile = new wxMenu;
	menuFile->Append(ID_Hello, "&Hello...\tCtrl-H",
		"Help string shown in status bar for this menu item");
	menuFile->AppendSeparator();
	menuFile->Append(wxID_EXIT);
	wxMenu* menuHelp = new wxMenu;
	menuHelp->Append(wxID_ABOUT);
	wxMenuBar* menuBar = new wxMenuBar;
	menuBar->Append(menuFile, "&File");
	menuBar->Append(menuHelp, "&Help");
	SetMenuBar(menuBar);

	wxButton* button1 = new wxButton(this, ID_Hello, _("Hello"), wxPoint(20, 20), wxSize(100, 32));
	Connect(ID_Hello, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MyFrame::OnHello));

	wxButton* button2 = new wxButton(this, wxID_ABOUT, _("About"), wxPoint(20, 60), wxSize(100, 32));
	Connect(wxID_ABOUT, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MyFrame::OnAbout));

	wxButton* button3 = new wxButton(this, wxID_EXIT, _("Exit"), wxPoint(20, 100), wxSize(100, 32));
	Connect(wxID_EXIT, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MyFrame::OnExit));

	CreateStatusBar();
	SetStatusText("Welcome to wxWidgets!");
	Bind(wxEVT_MENU, &MyFrame::OnHello, this, ID_Hello);
	Bind(wxEVT_MENU, &MyFrame::OnAbout, this, wxID_ABOUT);
	Bind(wxEVT_MENU, &MyFrame::OnExit, this, wxID_EXIT);
}

void MyFrame::OnExit(wxCommandEvent& event)
{
	Close(true);
}

void MyFrame::OnAbout(wxCommandEvent& event)
{
	wxMessageBox("This is a wxWidgets' Hello world sample",
		"About Hello World", wxOK | wxICON_INFORMATION);
}

void MyFrame::OnHello(wxCommandEvent& event)
{
	wxLogMessage("Hello world from wxWidgets!");
}
  1. 빌드하고 실행하면 아래와 같은 창이 열립니다.

img_1.png

참고

샘플 프로젝트를 아래에 올려두었습니다. wxWidgetsSample

이상입니다.

comments powered by Disqus