wxNotebook + Fehler



  • Hallo Leute kann mir jemand bei diesem Fehler helfen?

    beim compilieren bekomme ich folgendes Fehler:

    /home/stefan/Programmierung/sim/src/sim.cpp:29: error: expected primary-expression before ‘parent’
    

    Also ich verstehe nicht was ich in Zeile 29 bei parent eingeben muss!!

    Help und Danke!

    #include <wx/wx.h>
    #include <wx/button.h>
    #include <wx/combobox.h>
    #include <wx/notebook.h>
    #include "sim.h"
    
    BEGIN_EVENT_TABLE( simFrame, wxFrame )
    	EVT_MENU( Menu_File_Quit, simFrame::OnQuit )
    	EVT_MENU( Menu_File_About, simFrame::OnAbout )
    	EVT_BUTTON( wxID_Simulieren, simFrame::Simulieren )
    END_EVENT_TABLE()
    
    IMPLEMENT_APP(simapp)
    
    bool 
    simapp::OnInit()
    {
    	simFrame *frame = new simFrame( wxT( "Hello World" ), wxPoint(50,50), wxSize(32767,32767) );	
    	frame->Show(TRUE);
    	SetTopWindow(frame);
    	return TRUE;
    } 
    
    simFrame::simFrame( const wxString& title, const wxPoint& pos, const wxSize& size )
    	: wxFrame((wxFrame *)NULL, -1, title, pos, size)
    {
    
    	wxNotebook *notebook = new wxNotebook (simFrame parent, wxID_Notebook1,
    					wxDefaultPosition, wxSize(300,300));
    
    	wxPanel *panel1 = new wxPanel(notebook, wxID_Notebook1);
    	wxPanel *panel2 = new wxPanel(notebook, wxID_Notebook2);
    
    	wxMenu *menuFile = new wxMenu;
    
    	menuFile->Append( Menu_File_About, wxT( "&About..." ) );
    	menuFile->AppendSeparator();
    	menuFile->Append( Menu_File_Quit, wxT( "E&xit" ) );
    
    	wxMenuBar *menuBar = new wxMenuBar;
    	menuBar->Append( menuFile, wxT( "&File" ) );
    
    	SetMenuBar( menuBar );
    
    	CreateStatusBar();
    	SetStatusText( wxT( "Wilkommen! Geben Sie bitte alle Daten an!" ) );
    }
    
    void 
    simFrame::OnQuit( wxCommandEvent& WXUNUSED( event ) )
    {
    	Close(TRUE);
    }
    
    void 
    simFrame::OnAbout( wxCommandEvent& WXUNUSED( event ) )
    {
    	wxMessageBox( wxT( "This is a wxWidgets Hello world sample" ),
    			wxT( "About Hello World" ), wxOK | wxICON_INFORMATION, this );
    }
    

  • Mod

    wxNotebook *notebook = new wxNotebook (this, wxID_Notebook1,
    

    Einfach this für die Aktuelle Instanz übergeben.
    Und evtl. solltest du dir das Sizerkonzept von wxWidgets ansehen, damit kannst
    du das Layout deiner Programme verbessern.



  • Sizerkonzept ?


  • Mod

    mikey schrieb:

    Sizerkonzept ?

    Schau dir am besten mal die beiden wxWidgets Tutorials im Magazin an.
    In wxWidgets kann man Steuerelemente über Sizer im Fenster anordnen,
    so das sie keine Fixeposition haben. Damit können sie z.b. beim vergrößern des Fensters wachsen.



  • OK Danke das werde ich mir aufjeden Fall anschauen!

    Der Fehler ist weg!

    aber beim "Programm ausführen" kommt folgendes heraus!

    ./sim
    Segmentation fault (core dumped)
    ***Exited with status: 139***
    

    Das Programm startet nicht!

    #include <wx/wx.h>
    #include <wx/button.h>
    #include <wx/combobox.h>
    #include <wx/notebook.h>
    #include "sim.h"
    
    BEGIN_EVENT_TABLE( simFrame, wxFrame )
    	EVT_MENU( Menu_File_Quit, simFrame::OnQuit )
    	EVT_MENU( Menu_File_About, simFrame::OnAbout )
    	EVT_BUTTON( wxID_Simulieren, simFrame::Simulieren )
    END_EVENT_TABLE()
    
    IMPLEMENT_APP(simapp)
    
    bool 
    simapp::OnInit()
    {
    	simFrame *frame = new simFrame( wxT( "Hello World" ), wxPoint(50,50), wxSize(32767,32767) );	
    	frame->Show(TRUE);
    	SetTopWindow(frame);
    	return TRUE;
    } 
    
    simFrame::simFrame( const wxString& title, const wxPoint& pos, const wxSize& size )
    	: wxFrame((wxFrame *)NULL, -1, title, pos, size)
    {
    
    	wxNotebook *notebook = new wxNotebook (this, wxID_Notebook1,
    					wxDefaultPosition, wxSize(300,200));
    
    	wxPanel *panel1 = new wxPanel(notebook, wxID_Notebook1);
    	wxPanel *panel2 = new wxPanel(notebook, wxID_Notebook1);
    
    	notebook ->AddPage(panel1, wxT("eins"), true, 0);
    	notebook ->AddPage(panel2, wxT("zwei"), false, 1);
    
    	wxMenu *menuFile = new wxMenu;
    
    	menuFile->Append( Menu_File_About, wxT( "&About..." ) );
    	menuFile->AppendSeparator();
    	menuFile->Append( Menu_File_Quit, wxT( "E&xit" ) );
    
    	wxMenuBar *menuBar = new wxMenuBar;
    	menuBar->Append( menuFile, wxT( "&File" ) );
    
    	SetMenuBar( menuBar );
    
    	CreateStatusBar();
    	SetStatusText( wxT( "Wilkommen! Geben Sie bitte alle Daten an!" ) );
    }
    
    void 
    simFrame::OnQuit( wxCommandEvent& WXUNUSED( event ) )
    {
    	Close(TRUE);
    }
    
    void 
    simFrame::OnAbout( wxCommandEvent& WXUNUSED( event ) )
    {
    	wxMessageBox( wxT( "This is a wxWidgets Hello world sample" ),
    			wxT( "About Hello World" ), wxOK | wxICON_INFORMATION, this );
    }
    

  • Mod

    Du solltest für jedes Fenster eine eigene ID vergeben.
    Daran könnte es liegen.



  • ne. funktioniert nicht.

    Muss an irgendetwas anderes liegen!


Anmelden zum Antworten