wxwidgets.org Vengono presentati tre esempi. Richiedono l'installazione delle librerie wxwidget, di codelite e di wxformbuilder
Comando per compilare il seguente codice sorgente
g++ gui1.cpp `wx-config --libs` `wx-config --cxxflags` -o gui1
#include <wx/app.h> class MiaApp : public wxApp { public: virtual bool OnInit(); }; DECLARE_APP(MiaApp) //vedi gui1.cpp class MiaCornice : public wxFrame { public: MiaCornice(const wxString &title, const wxPoint &pos, const wxSize &size); /*~MiaCornice();*/ void Uscire(wxCommandEvent& event); protected: DECLARE_EVENT_TABLE() //vedi gui1.cpp private: wxButton* b1; };
#include <wx/wxprec.h> #ifndef WX_PRECOMP # include <wx/wx.h> #endif #include "gui1.h" BEGIN_EVENT_TABLE(MiaCornice,wxFrame) //associa ad ogni evento un metodo di getione EVT_BUTTON(1001,MiaCornice::Uscire) END_EVENT_TABLE() IMPLEMENT_APP(MiaApp) //crea il main e il metodo wxGetApp e fa inizializzazioni bool MiaApp::OnInit() { MiaCornice *finestra1 = new MiaCornice(_T("titolodellafinestra!"), wxDefaultPosition,wxSize(300, 200)); finestra1->Show(true); //SetTopWindow(finestra1); return true; } MiaCornice::MiaCornice(const wxString& title, const wxPoint& pos, const wxSize& size): wxFrame((wxFrame *) NULL, -1, title, pos, size) { b1 = new wxButton(this,1001,_T("pulsante....."),wxDefaultPosition, wxDefaultSize, 0); } void MiaCornice::Uscire(wxCommandEvent& event) { Close(true); }
Con wxformbuilder costruisco solo la Classe Base per la finestra (MyFrame). Non devo modificare il codice generato da wxformbuilder (MyFrame.cpp) perché la classe base non deve contenere l'implementazione dei metodi (astratti).
Creo invece una classe Derivata (MiaCornice) a partire dalla classe Base creata da wxformbuilder (MyFrame) in modo che ne erediti tutti gli attributi e tutti i metodi. Poi implemento dentro la classe Derivata (MiaCornice) tutti i metodi di cui ho bisogno (per gestire gli eventi).
g++ main.cpp MiaCornice.cpp MyFrame.cpp `wx-config --libs` `wx-config --cxxflags`
//main application frame declaration//
ECCETTO
#end_if
perché quel codice si trova già in mainframe.h
#include "gui.h"
con
#include "mainframe.h"
perché la classe dentro gui.h è solo la classe base.
//TO DO//