[c++] wxWidgets에서의 이벤트 처리

wxWidgets는 C++로 작성된 크로스 플랫폼 GUI 라이브러리로, 다양한 이벤트들을 처리할 수 있는 강력한 기능을 제공합니다.

이벤트 핸들러 함수 만들기

이벤트 핸들러 함수는 특정 이벤트가 발생했을 때 호출되는 함수입니다. 예를 들어, 버튼을 클릭하거나 메뉴를 선택할 때 실행되는 코드를 포함할 수 있습니다.

다음은 wxButton 클래스에서 클릭 이벤트를 처리하는 예제 코드입니다:

EVT_BUTTON(id, function)

위 코드에서 id는 버튼의 ID이고, function은 이벤트가 발생했을 때 호출될 함수명입니다.

이벤트 테이블에 핸들러 함수 추가하기

이벤트 테이블은 이벤트와 핸들러 함수를 연결하는데 사용됩니다. 이벤트 테이블에 핸들러 함수를 추가하여 특정 이벤트가 발생했을 때 어떤 함수를 실행할지를 지정할 수 있습니다.

BEGIN_EVENT_TABLE(MyFrame, wxFrame)
    EVT_BUTTON(id, MyFrame::OnButtonClick)
END_EVENT_TABLE()

위 코드에서 MyFrame은 이벤트를 처리할 클래스이고, OnButtonClick은 클릭 이벤트를 처리할 함수입니다.

이벤트 처리 예제

#include <wx/wx.h>

class MyFrame : public wxFrame
{
public:
    MyFrame(const wxString& title)
        : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(300, 200))
    {
        wxButton *btn = new wxButton(this, wxID_ANY, wxT("Click me"), wxPoint(10, 10), wxSize(150, 50));
        Connect(btn->GetId(), wxEVT_BUTTON, wxCommandEventHandler(MyFrame::OnButtonClick));
    }

    void OnButtonClick(wxCommandEvent& event)
    {
        wxMessageBox(wxT("Button clicked!"));
    }

    DECLARE_EVENT_TABLE()
};

BEGIN_EVENT_TABLE(MyFrame, wxFrame)
    EVT_BUTTON(wxID_ANY, MyFrame::OnButtonClick)
END_EVENT_TABLE()

위의 코드는 MyFrame 클래스에서 버튼을 클릭했을 때 메시지 상자를 표시하는 간단한 예제입니다.

wxWidgets에서의 이벤트 처리는 위와 같은 방식으로 수행됩니다. 이제 여러분은 이벤트 처리를 사용하여 wxWidgets 애플리케이션을 더욱 동적으로 만들 수 있을 것입니다.