wxWidgets에서 wxID_CUT과 TextCtrl에서 Cut을 지원해준다.

 

 wxMain.h에서는 이벤트 핸들러를 추가해주고,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
    // Edit 메뉴에 적용할 이벤트 핸들러
    void OnUndo(wxCommandEvent& event);
    void OnRedo(wxCommandEvent& event);
    void OnCut(wxCommandEvent& event);
    void OnSelectAll(wxCommandEvent& event);
    void OnInsertDateTime(wxCommandEvent& event);
 
 
 
    // 메뉴 동적 활성화 하기 위한 이벤트 핸들러
    void OnUpdateUndo(wxUpdateUIEvent& event);
    void OnUpdateRedo(wxUpdateUIEvent& event);
 
    void OnUpdateCut(wxUpdateUIEvent& event);
cs

 

 

wxMain.cpp에서 하위 메뉴와 이벤트 핸들러를 연결하고, 구현한다.

 

하위 메뉴 추가

1
2
3
4
5
6
7
8
    m_menuEdit = new wxMenu;
    m_menuEdit->Append(wxID_UNDO, "&Undo\tCtrl+Z""Undo the last action");
    m_menuEdit->Append(wxID_REDO, "&Redo\tCtrl+Y""Redo the last undone action");
    m_menuFile->AppendSeparator();
    m_menuEdit->Append(wxID_CUT, "Cu&t\tCtrl+X""Cut the selected text to the clipboard");
    m_menuEdit->Append(ID_SELECT_ALL, "&Select All\tCtrl+A""Select all text");
    m_menuFile->AppendSeparator();
    m_menuEdit->AppendCheckItem(ID_DATETIME, "&DateTime\tF5""DateTime");
cs

 

이벤트 핸들러 연결

1
2
3
4
5
6
7
8
9
10
11
12
    // 메뉴 Edit에 관련된 이벤트 핸들러
    Bind(wxEVT_MENU, &MyFrame::OnUndo, this, wxID_UNDO);
    Bind(wxEVT_MENU, &MyFrame::OnRedo, this, wxID_REDO);
    Bind(wxEVT_MENU, &MyFrame::OnCut, this, wxID_CUT);
    Bind(wxEVT_MENU, &MyFrame::OnSelectAll, this, ID_DATETIME);
    Bind(wxEVT_MENU, &MyFrame::OnInsertDateTime, this, ID_DATETIME);
 
    // 메뉴바 갱신 이벤트 핸들러
    Bind(wxEVT_UPDATE_UI, &MyFrame::OnUpdateUndo, this, wxID_UNDO);
    Bind(wxEVT_UPDATE_UI, &MyFrame::OnUpdateRedo, this, wxID_REDO);
 
    Bind(wxEVT_UPDATE_UI, &MyFrame::OnUpdateCut, this, wxID_CUT);
cs

 

이벤트 핸들러 구현

1
2
3
4
5
6
7
8
void MyFrame::OnCut(wxCommandEvent& event) {
    m_textControl->Cut();
}
 
void MyFrame::OnUpdateCut(wxUpdateUIEvent& event)
{
    event.Enable(m_textControl->CanCut());
}
cs

 

이렇게 해서 TextCtrl에서 잘라내는 기능을 구현할 수 있다.

 

 

 

Posted by JunkMam
,