wxMain.h에는 이벤트 핸들러를 추가해준다.

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

 

 wxMain.cpp에는 메뉴 추가 및 이벤트 핸들러를 연결한다.

1
2
3
4
5
6
7
8
9
10
    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(wxID_COPY, "&Copy\tCtrl+C""Copy the selected text to the clipboard");
    m_menuEdit->Append(wxID_PASTE, "&Paste\tCtrl+V""Paste text from 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
13
14
15
16
17
    // 메뉴 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::OnCopy, this, wxID_COPY);
    Bind(wxEVT_MENU, &MyFrame::OnPaste, this, wxID_PASTE);
    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);
    Bind(wxEVT_UPDATE_UI, &MyFrame::OnUpdateCopy, this, wxID_COPY);
    Bind(wxEVT_UPDATE_UI, &MyFrame::OnUpdatePaste, this, wxID_PASTE);
cs

 

이벤트 핸들러인 OnPaste와 OnUpdatePaste을 구현한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
// 붙여넣기 기능.
void MyFrame::OnPaste(wxCommandEvent& event) {
    if (m_textControl->CanPaste()) {
        m_textControl->Paste();
    }
}
 
// 붙여넣기 기능 활성화.
void MyFrame::OnUpdatePaste(wxUpdateUIEvent& event)
{
    event.Enable(m_textControl->CanPaste());
}
 
cs

 

이렇게 하면, 마우스로 붙여넣기 메뉴를 사용해서 클립보드로 저장된걸 붙여넣을 수 있다.

Posted by JunkMam
,