====== Includere risorse binarie nella nostra app wxWidgets ======
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **// 05/12/2023 - 16:27 //** // //
Ho creato il file della gui con wxFormbuilder (**gui.xrc**) poi tramite il binario **wxrc** l'ho convertito in un sorgente c++ (**gui.cpp**). Poi ho incluso gui.cpp e caricato l'apposita funzione che rende disponibili i widgets all'interno della nostra applicazione (**InitXmlResource()** contenuta in gui.cpp).
===== main.cc =====
#include "wx/wx.h"
#include "wx/xrc/xmlres.h"
#include "gui.cpp"
class MainFrame{
public:
wxFrame frame0;
wxStaticText *label0;
wxTextCtrl *text0;
wxButton *button0;
void ShowFrame();
void OnClickme(wxCommandEvent& event);
} ;
//L'implementazione della nostra classe responsabile del caricamento della nostra gui
void MainFrame::ShowFrame()
{
//Ricavo il riferimento alla mia finestra principale
wxXmlResource::Get()->LoadFrame(&frame0, NULL, wxT("frame0"));
label0 = XRCCTRL(frame0, "label0", wxStaticText);
text0 = XRCCTRL(frame0, "text0", wxTextCtrl);
button0 = XRCCTRL(frame0, "button0", wxButton);
button0->Bind(wxEVT_BUTTON, &MainFrame::OnClickme, this);
frame0.Show();
}
void MainFrame::OnClickme(wxCommandEvent& event)
{
label0->SetLabel(text0->GetValue());
puts(text0->GetValue());
}
class MyApp: public wxApp
{
//questo metodo รจ presente in ogni oggetto wxApp
// serve a lanciare la prima finestra e ad altre inizializzazioni.
virtual bool OnInit();
};
bool MyApp::OnInit()
{
wxXmlResource::Get()->InitAllHandlers(); //inizializziamo
InitXmlResource(); //in gui.cpp ottenuto con "wxrc gui.xrc -v -c -o gui.cpp"
//wxXmlResource::Get()->Load(wxT("gui.xrc")); //se volessimo caricare la gui dal file xrc
MainFrame *MainWin = new MainFrame(); //instanziamo la nostra classe responsabile
MainWin->ShowFrame(); //del caricamento della nostra gui
return true;
}
//Macro che implementa la main() principale
IMPLEMENT_APP(MyApp)
===== Makefile =====
CPP = g++
OPTS = `wx-config --cxxflags --libs`
all:
wxrc gui.xrc -v -c -o gui.cpp
$(CPP) main.cc -o wxtest $(OPTS)