Witajcie.
Chciałem sobie napisać taki fajny notatniczek, bo zacząłem się uczyć wx z c++
Skorzystałem z tego linka:
http://www.dreamincode.net/forums/topic/67058-wxwidgets-part-iii-creating-a-notepad-application/
Ale nie pojawia mi się okienko. Może ktoś mi na to zerknąć?
Informuję, że kod przepisywałem, a nie przeklejałem. Wolałbym mieć to w więcej, niż jednym pliku, więc podzieliłem sobie to wg klas.
mainapp.h:
#include "notemain.h"
class MainApp: public wxApp
{
public:
virtual bool onInit();
};
mainapp.cpp:
#include "mainapp.h"
wxIMPLEMENT_APP(MainApp);
bool MainApp::onInit()
{
Notepad *main = new Notepad();
main->Show(true);
return true;
}
notemain.h:
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif
class Notepad: public wxFrame
{
public:
Notepad();
private:
wxMenuBar *menu;
wxMenu *file;
wxTextCtrl *text;
void onSave(wxCommandEvent &e);
void onOpen(wxCommandEvent &e);
void onExit(wxCommandEvent &e);
wxDECLARE_EVENT_TABLE();
};
enum controls {ID_SAVE = 1000, ID_OPEN, ID_EXIT};
ostatni plik, notemain.cpp:
#include "notemain.h"
wxBEGIN_EVENT_TABLE(Notepad, wxFrame)
EVT_MENU(ID_SAVE, Notepad::onSave)
EVT_MENU(ID_OPEN, Notepad::onOpen)
EVT_MENU(ID_EXIT, Notepad::onExit)
wxEND_EVENT_TABLE()
Notepad::Notepad() : wxFrame(NULL, wxID_ANY, wxT("Simplenote"), wxDefaultPosition, wxSize(1024,600))
{
this->menu = new wxMenuBar();
this->file = new wxMenu();
this->file->Append(ID_SAVE, wxT("Zapisz\tctrl+s"));
this->file->Append(ID_OPEN, wxT("Otwórz\tctrl+o"));
this->file->AppendSeparator();
this->file->Append(ID_EXIT, wxT("Zamknij\tctrl+q"));
this->menu->Append(file, wxT("&Plik"));
this->SetMenuBar(menu);
this->text = new wxTextCtrl(this, wxID_ANY, wxT(""), wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER | wxTE_MULTILINE);
CreateStatusBar();
}
void Notepad::onSave(wxCommandEvent &e)
{
wxFileDialog *sd = new wxFileDialog(this, wxT("Zapisz Plik~"), wxT(""), wxT(""), wxT("Wszystkie pliki (*.*)"), wxFD_SAVE);
int resp = sd->ShowModal();
if(resp == wxID_OK)
{
this->text->SaveFile(sd->GetPath());
}
}
void Notepad::onOpen(wxCommandEvent &e)
{
wxFileDialog *od = new wxFileDialog(this, wxT("Otwórz plik"), wxT(""), wxT(""), wxT("Wszystkie pliki (*.*)"), wxFD_OPEN);
int resp = od->ShowModal();
if(resp == wxID_OK)
{
this->text->LoadFile(od->GetPath());
}
}
void Notepad::onExit(wxCommandEvent &e)
{
Close(true);
}