'2024/02/01'에 해당되는 글 2건

  1. 2024.02.01 [wxWidgets] 간단한 윈도우 화면을 만들기.
  2. 2024.02.01 [wxWidgets] 메뉴추가하는 방법.

 

Visual Studio에서 wxWidgets을 적용하기 위해서 설정.

 

 wxWidget에서 Visual Studio를 적용하기 위해선 제대로 지원을 해주지 않기 때문에 빈 프로젝트를 만들어 줘야한다.

 

이렇게 빈 프로젝트를 생성해준다.

 

그 다음은 'Visual Studio와 wxWidgets 연동하기.'여기에 설명되어 있는 방식으로 wxWidgets을 설정 해줘야한다.

 

여기서 외부 종속성에서 wxWidgets에 관련된 경로가 찾아지는데 시간이 걸린다.

 

간단하게 윈도우를 출력하는걸 표현하기 위해서 wxMain.h을 만들고, 다음과 같이 작성해보자.

#pragma once
#include "wx/wx.h"

enum
{
    ID_QUIT,
};

enum {
    MY_EVENT_ID = 10001,
};

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

class MyFrame : public wxFrame
{
public:
    MyFrame(const wxString& title);

    void OnQuit(wxCommandEvent& event);
private:
};

 

 간단한 wxMain.cpp 관련된 정의를 다음과 같이 구현한다.

#include "wxMain.h"

wxIMPLEMENT_APP(MyApp);

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

MyFrame::MyFrame(const wxString& title)
    : wxFrame(NULL, wxID_ANY, title)
{
    wxMenu* menuFile = new wxMenu;
    menuFile->Append(ID_QUIT, "E&xit\tAlt-X", "프로그램 종료");

    wxMenuBar* menuBar = new wxMenuBar;
    menuBar->Append(menuFile, "&File");

    SetMenuBar(menuBar);

    wxSplitterWindow* splitter = new wxSplitterWindow(this);
    wxPanel* panel1 = new wxPanel(splitter, wxID_ANY);
    wxPanel* panel2 = new wxPanel(splitter, wxID_ANY);

    splitter->SplitVertically(panel1, panel2);

    // 이벤트 핸들러 연결
    Bind(wxEVT_MENU, &MyFrame::OnQuit, this, ID_QUIT);
}

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

 

이렇게 하면, 다음과 같은 창이 띄워진다.

 

 

 

Posted by JunkMam
,

 wxWidgets에서 GUI 어플리케이션을 개발할때, 메뉴를 추가하는건 다음을 필요로한다.

 

 1. 메뉴바 생성.

    wxMenuBar* menuBar = new wxMenuBar;
    menuBar->Append(menuFile, "&File");

 

 wxWidgets에서 지원해주는 클래스로 wxMenuBar라는 클래스가 있다. 이 클래스는 윈도우 상단에 위치하는 메뉴바를 나타내는 것으로 여기서 메뉴의 항목이라는 부분이 있게 된다.

 

 윈도우의 'F'를 단축키를 가지는 'File'이라는 메뉴를 추가 할 수 있게 된다.

 여기서 하위 메뉴를 추가하고자한다면, 다음과 같은 작업을 하면된다.

    wxMenu* menuFile = new wxMenu;
    menuFile->Append(ID_QUIT, "E&xit\tAlt-X", "프로그램 종료");

 

이것을 메뉴를 추가를 이상없이 적용하고 위해선 다음과 같이 한다.

    SetMenuBar(menuBar);

 

 이렇게 하면, 윈도우에 적용하게 된다.

 

 각 메뉴에 대해서 이벤트를 처리하는 방법은 다음과 같다.

 

    // 이벤트 핸들러 연결
    Bind(wxEVT_MENU, &MyFrame::OnQuit, this, ID_QUIT);

 

 wxEVT_MENU라는 것은 MENU에 대한 이벤트를 적용하는 것이 있다.

 MyFrame::OnQuit라는 클래스의 메소드를 바로 연결해서 이벤트 처리하는 기능을 넣을 수 있다.

Posted by JunkMam
,