WX: XRC aus String laden
-
Guten Abend,
ich versuche schon seit ein paar Tagen über eine eingebettete XRC-Resource ein Fenster zu laden.
Hier mein bisheriger Code:
#include <wx/app.h> #include <wx/frame.h> #include <wx/filesys.h> #include <wx/fs_mem.h> #include <wx/xrc/xmlres.h> #include <wx/xrc/xh_all.h> // ----------------------------------------------------------------------------- wxChar mainframe_xrc[] = wxT("<?xml version=\"1.0\"?>") wxT("<resource version=\"2.3.0.1\">") wxT(" <object class=\"wxFrame\" name=\"mainframe\">") wxT(" <size>200,300</size>") wxT(" </object>") wxT("</resource>"); // ----------------------------------------------------------------------------- class Application : public wxApp { public: bool OnInit(); }; // ----------------------------------------------------------------------------- DECLARE_APP(Application) IMPLEMENT_APP(Application) // ----------------------------------------------------------------------------- bool Application::OnInit() { if(!wxApp::OnInit()) return false; wxFileSystem::AddHandler(new wxMemoryFSHandler); wxMemoryFSHandler::AddFile(wxT("mainframe.xrc"), mainframe_xrc, sizeof(mainframe_xrc)); wxXmlResource::Get()->InitAllHandlers(); wxXmlResource::Get()->Load(wxT("memory:mainframe.xrc")); wxFrame* frame = NULL; if(!wxXmlResource::Get()->LoadFrame(frame, NULL, wxT("mainframe"))) { return false; } if(frame) { frame->Show(); } else { return false; } return true; }
Doch wenn ich das Programm ausführe kommt eine Fehlermeldung mit 3 Fehlern:
XML parsing error: 'not well-formed (invalid token)' at line 1 Cannot load resources from file 'memory:mainframe.xrc'. XRC error: XRC resource "mainframe" (class "wxFrame") not found
Ich sehe einfach nicht, was falsch sein soll...
Wenn mir jemand beim Fehlersuchen helfen könnte, wäre das nettMein System
OS: Win7 Prof. x64
WX: 2.9.2Vielen Dank und viele Grüße
Fabian
-
Was soll der tiefere Sinn und Zweck dieser Übung sein?
Niemand codiert XRC fest im Programm. XRC wird ja genau für das Gegenteil verwendet.
Wenn du den Frame gleich in C++ reincodest, dann ist das gerade einmal ein Zweizeiler.
-
Er will es einfach verstehen.
Ich kenn mich in WX nicht aus, aber lass die erste XML Zeile mal weg. Der Parser hat wohl ein Problem damit.