이전에 저장 기능에서 파일 경로를 새로 불러오는 경우가 불편해서 뺏다면, 이번엔 다른 이름으로 저장해야되는 경우가 생길 수 있다.
이걸 구현하기 위해서 메뉴를 추가해줘야한다.
wxMain.h
1
2
3
4
5
6
7
8
|
enum
{
ID_QUIT,
ID_SAVE_AS,
ID_WordWarp,
ID_FontSetting,
ID_StatusBar,
};
|
cs |
이렇게 해서 ID을 추가하고,
Bind로 연결될 이벤트 핸들러 메소드를 선언해준다.
OnSaveAs을 wxMain.h에 추가해준다.
wxMain.h
1
2
3
|
void OnOpen(wxCommandEvent& event);
void OnSave(wxCommandEvent& event);
void OnSaveAs(wxCommandEvent& event);
|
cs |
이 후에 wxMain.cpp에서 메뉴를 추가하는 기능을 정의하며, 이벤트 핸들러를 정의 및 연결해줘야한다.
wxMain.cpp
1
2
3
4
5
6
7
8
|
m_menuFile = new wxMenu;
m_menuFile->Append(wxID_NEW, "&New\tCtrl-N", "New a Notepad");
m_menuFile->Append(ID_NEW_WINDOW, "&New Windows\tCtrl+Shift+N", "Open a new window.");
m_menuFile->Append(wxID_OPEN, "&Open\tCtrl-O", "Open a file");
m_menuFile->Append(wxID_SAVE, "&Save\tCtrl-S", "Save the file");
m_menuFile->Append(ID_SAVE_AS, "Save &As\tCtrl-A", "Save the file");
m_menuFile->AppendSeparator();
m_menuFile->Append(ID_QUIT, "E&xit\tAlt-X", "프로그램 종료");
|
cs |
이렇게 메뉴를 추가한다.
Append(ID_SAVE_AS, "Save &As\tCtrl-A", "Save the file");을 이용해서 메뉴를 추가해준다.
이 후에 이벤트 핸들러를 연결해준다.
wxMain.cpp
1
2
3
|
Bind(wxEVT_MENU, &MyFrame::OnOpen, this, wxID_OPEN);
Bind(wxEVT_MENU, &MyFrame::OnSave, this, wxID_SAVE);
Bind(wxEVT_MENU, &MyFrame::OnSaveAs, this, ID_SAVE_AS);
|
cs |
Bind을 이용해서 설정해놓은 ID_SAVE_AS에 연결이 되었으니.
OnSaveAs라는 함수를 정의 해줘야한다.
wxMain.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
void MyFrame::OnSaveAs(wxCommandEvent& event)
{
wxFileDialog saveFileDialog(this, _("Save TXT file"), "", "",
"TXT files (*.txt)|*.txt", wxFD_SAVE | wxFD_OVERWRITE_PROMPT);
wxString saveAsFileName;
wxString saveAsFilePath;
switch (saveFileDialog.ShowModal()) {
case wxID_OK: {
saveAsFileName = saveFileDialog.GetFilename();
saveAsFilePath = saveFileDialog.GetPath();
break;
}
case wxID_CANCEL: {
return;
}
}
// 사용자가 선택한 파일 경로를 저장합니다.
if (!m_textControl->SaveFile(saveAsFilePath))
{
wxMessageBox("Could not save the file!", "Error", wxOK | wxICON_ERROR);
return;
}
// 파일이 성공적으로 저장되었다면, 현재 파일 경로를 업데이트하고 타이틀을 설정합니다.
m_currentFileName = saveAsFileName;
m_currentFilePath = saveAsFilePath;
wxString titleNames = m_currentFileName;
SetTitle(titleNames + " - Notepad"); // 타이틀 업데이트
// 상태 표시줄에 메시지를 표시합니다.
SetStatusText("File saved successfully.");
}
|
cs |
이렇게 해서 메시지를 표시 및 적용할 수 있게 된다.
'프로그래밍 > wxWidgets' 카테고리의 다른 글
[wxWidgets] 텍스트 컨트롤에 글 모두 선택하기 기능 넣기 (0) | 2024.02.14 |
---|---|
[wxWidgets] Text Control에서 시간과 날짜를 추가하기 (0) | 2024.02.14 |
[wxWidgets] 저장과 열기를 개선하기 (1) | 2024.02.13 |
[wxWidgets] 상태바 On/Off 설정하기 (1) | 2024.02.12 |
[wxWidgets] 새 창 만들기 기능 구현하기. (1) | 2024.02.12 |