/********** hellowx.cc **********/ #include "hellowx.h" IMPLEMENT_APP(HelloApp); bool HelloApp::OnInit() { HelloFrame *ptr_main = new HelloFrame(); SetTopWindow(ptr_main); ptr_main->Show(TRUE); return TRUE; } BEGIN_EVENT_TABLE(HelloFrame, wxFrame) EVT_MENU(OPEN_EVT_ID, HelloFrame::OnOpen) EVT_MENU(SAVE_EVT_ID, HelloFrame::OnSave) EVT_MENU(QUIT_EVT_ID, HelloFrame::OnQuit) EVT_MENU(ABOUT_EVT_ID, HelloFrame::OnAbout) END_EVENT_TABLE() HelloFrame::HelloFrame() :wxFrame(static_cast(NULL), -1, "Hello wxWindows") { m_ptrMenBar = new wxMenuBar(); m_ptrFileMenu = new wxMenu(); m_ptrFileMenu->Append(OPEN_EVT_ID, "&Oeffnen"); m_ptrFileMenu->Append(SAVE_EVT_ID, "&Speichern"); m_ptrFileMenu->Append(QUIT_EVT_ID, "&Beenden"); m_ptrMenBar->Append(m_ptrFileMenu, "&Datei"); m_ptrHelpMenu = new wxMenu(); m_ptrHelpMenu->Append(ABOUT_EVT_ID, "&About"); m_ptrMenBar->Append(m_ptrHelpMenu, "&Hilfe"); SetMenuBar(m_ptrMenBar); m_ptrText = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE); } void HelloFrame::OnSave(wxCommandEvent &event) { wxFileDialog saveDialog(static_cast(NULL), "Save", "", "", "*.txt", wxSAVE); if(saveDialog.ShowModal() == wxID_OK) { m_ptrText->SaveFile(saveDialog.GetPath()); } } void HelloFrame::OnOpen(wxCommandEvent &event) { wxFileDialog openDialog(static_cast(NULL), "Open", "", "", "*.txt", wxOPEN); if(openDialog.ShowModal() == wxID_OK) { m_ptrText->LoadFile(openDialog.GetPath()); } } void HelloFrame::OnQuit(wxCommandEvent &event) { if(!m_ptrText->IsModified()) { Close(TRUE); return; } wxMessageDialog msgDialog(static_cast(NULL), "Datei wurde geaendert. Wirklich beenden?", "Wirklich beenden?", wxOK | wxCANCEL | wxICON_QUESTION); if(msgDialog.ShowModal() == wxID_OK) { Close(TRUE); } } void HelloFrame::OnAbout(wxCommandEvent &event) { AboutDialog aboutdlg; aboutdlg.ShowModal(); } AboutDialog::AboutDialog() :wxDialog(static_cast(NULL), -1, "About") { wxButton *ok_button = new wxButton(this, wxID_OK, "OK"); wxTextCtrl *about_txt = new wxTextCtrl(this, -1, "Nur eine nichtssagende Aboutbox :-)", wxDefaultPosition, wxSize(200, 100), wxTE_MULTILINE | wxTE_READONLY); wxBoxSizer *ptr_sizer = new wxBoxSizer(wxVERTICAL); ptr_sizer->Add(about_txt, 0, wxALL, 5); ptr_sizer->Add(ok_button, 0, wxALIGN_CENTER, 10); SetSizer(ptr_sizer); ptr_sizer->SetSizeHints(this); }