====== 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)