NotePad에서 [편집] > [시간/날짜]를 누르면, 메모장에서 시간과 날짜가 추가되는 기능이 있는데.
그것을 wxWidgets에서 구현하고자한다.
[Edit] > [DateTime] 이런식의 메뉴를 추가하기 위해서 메뉴 정보를 열거형으로 선언한다.
wxMain.h에는 다음과 같이 수정해준다.
1
2
3
4
5
6
7
8
9
10
|
enum
{
ID_QUIT,
ID_SAVE_AS,
ID_DATETIME,
ID_WordWarp,
ID_FontSetting,
ID_StatusBar,
};
|
cs |
메뉴바에서 메뉴를 추가하기 위해서 wxMenu 변수를 추가한다.
wxMenu에서 wxMenu* m_menuEdit을 추가한다.
1
2
3
4
5
6
|
// 메뉴바 및 메뉴 변수.
wxMenuBar* m_menuBar;
wxMenu* m_menuFile;
wxMenu* m_menuEdit;
wxMenu* m_menuFormat;
wxMenu* m_menuView;
|
cs |
메뉴가 추가되었으니.
메뉴를 클릭했을때, 동작시키는 이벤트 핸들러를 추가해준다.
OnInsertDateTime(wxCommandEvent& event)을 추가해준다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
// File 메뉴에 적용할 이벤트 핸들러
void OnNew(wxCommandEvent& event);
void OnNewWindow(wxCommandEvent& event);
void OnOpen(wxCommandEvent& event);
void OnSave(wxCommandEvent& event);
void OnSaveAs(wxCommandEvent& event);
void OnButtonClick(wxCommandEvent& event);
// Edit 메뉴에 적용할 이벤트 핸들러
void OnInsertDateTime(wxCommandEvent& event);
// Format 메뉴에 적용할 이벤트 핸들러
void OnToggleWordWrap(wxCommandEvent& event);
void OnFontSetting(wxCommandEvent& event);
// View 메뉴에 적용할 이벤트 핸들러
void OnToggleStatusBar(wxCommandEvent& event);
// 이벤트를 받기 위한 메소드
void OnMyCustomEvent(MyCustomEvent& event);
|
cs |
이렇게 wxMain.h로 선언을 제대로 완료했으면, wxMain.cpp에서 선언으로 추가한 코드들을 구현해주자.
wxMain.cpp 에서 Bind로 메뉴에 이벤트 핸들러랑 연결하도록 한다.
1
2
|
// 메뉴 Edit에 관련된 이벤트 핸들러
Bind(wxEVT_MENU, &MyFrame::OnInsertDateTime, this, ID_DATETIME);
|
cs |
이렇게 한 후에 OnInsertDateTime을 구현한다.
1
2
3
4
5
6
7
8
9
|
void MyFrame::OnInsertDateTime(wxCommandEvent& event) {
// 현재 날짜와 시간을 가져옴.
wxDateTime now = wxDateTime::Now();
// 현재 날짜와 시간을 기본 형식으로 문자열로 변환.
wxString dateTimeStr = now.Format();
// 현재 텍스트 컨트롤에 날짜와 시간의 문자열을 삽입함.
m_textControl->AppendText(dateTimeStr);
}
|
cs |
textControl에서 AppendText을 이용하면, 마지막에 현재 날짜와 시간의 문자열로 삽입하게 된다.
현재 위치의 커서에서 출력하도록 할려면, 다음과 같이 수정해야된다.
1
2
3
4
5
6
7
8
9
|
void MyFrame::OnInsertDateTime(wxCommandEvent& event) {
// 현재 날짜와 시간을 가져옴.
wxDateTime now = wxDateTime::Now();
// 현재 날짜와 시간을 기본 형식으로 문자열로 변환.
wxString dateTimeStr = now.Format();
m_textControl->WriteText(dateTimeStr);
}
|
cs |
이렇게 하면, 끝이 아니라 현재 커서에서 해당 문자열이 추가되는걸 확인이 가능하다.
'프로그래밍 > wxWidgets' 카테고리의 다른 글
[wxWidgets] 실행 취소(Undo) 기능 구현하기. (0) | 2024.02.15 |
---|---|
[wxWidgets] 텍스트 컨트롤에 글 모두 선택하기 기능 넣기 (0) | 2024.02.14 |
[wxWidgets] 다른 이름으로 저장 기능 구현 (1) | 2024.02.13 |
[wxWidgets] 저장과 열기를 개선하기 (1) | 2024.02.13 |
[wxWidgets] 상태바 On/Off 설정하기 (1) | 2024.02.12 |