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 nett 😉

    Mein System
    OS: Win7 Prof. x64
    WX: 2.9.2

    Vielen 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.


Anmelden zum Antworten