Frame per OnClick-Funktion aufrufen



  • Hallo Forum,

    ich versuche gerade eine kleine Test-App zu schreiben in der ich ein MainFrame habe und zwei SideFrames durch ein MenuItem aufrufen will.

    Ich stelle mal meine gui.h und gui.cpp zur Verfügung. Ich denke ihr könnt mir dann recht schnell sagen was ich falsch mache:

    #include <wx/wx.h>
    
    class MainFrame : public wxFrame
    {
    public:
    	MainFrame(const wxString& title);
    
    	void f_SF1(wxCommandEvent& event);
    	void f_SF2(wxCommandEvent& event);
    
    	wxMenuBar *menubar;
    	wxMenu *sideframes;
    };
    
    class SideFrame : public wxFrame
    {
    public:
    	SideFrame(const wxString& title);
    };
    
    const int ID_SF1 = 100;
    const int ID_SF2 = 101;
    const int ID_MF  = 102;
    
    #include "gui.h"
    
    MainFrame::MainFrame(const wxString& title)
    	: wxFrame(NULL, ID_MF, title, wxDefaultPosition, wxSize(280,180))
    {
    	menubar = new wxMenuBar;
    	sideframes = new wxMenu;
    
    	sideframes->Append(ID_SF1, _T("SF1"));
    	sideframes->Append(ID_SF2, _T("SF2"));
    	menubar->Append(sideframes, _T("Sideframes"));
    
    	SetMenuBar(menubar);
    
    	Connect(ID_SF1, wxEVT_COMMAND_MENU_SELECTED,
    		wxCommandEventHandler(MainFrame::f_SF1));
    	Connect(ID_SF2, wxEVT_COMMAND_MENU_SELECTED,
    		wxCommandEventHandler(MainFrame::f_SF2));
    
    	Centre();
    }
    
    void MainFrame::f_SF1(wxCommandEvent& event)
    {
    	//dupliziere das MainFrame
    	MainFrame *sf1 = new MainFrame("SF1");
        sf1->Show();
    }
    
    void MainFrame::f_SF2(wxCommandEvent& event)
    {
    	//erstelle ein neues Frame
    	SideFrame *sf2 = new SideFrame("SF");
    	sf2->Show();
    }
    

    -Nod



  • Ok, mit wxDialog hab ich jetzt geschafft ein neues Fenster zu öffnen, aber jetzt habe ich das Problem das ich den Dialog nicht gestalten kann

    Zu den Quellcodes:
    gui.h:

    #include <wx/wx.h>
    
    class MainFrame : public wxFrame
    {
    public:
    	MainFrame(const wxString& title);
    
    	void f_SF1(wxCommandEvent& event);
    	void f_SF2(wxCommandEvent& event);
    
    	wxMenuBar *menubar;
    	wxMenu *sideframes;
    };
    
    const int ID_SF1 = 100;
    const int ID_SF2 = 101;
    const int ID_MF  = 102;
    const int ID_DIAL1 = 103;
    const int ID_DIAL2 = 104;
    
    #include "gui.h"
    
    MainFrame::MainFrame(const wxString& title)
    	: wxFrame(NULL, ID_MF, title, wxDefaultPosition, wxSize(280,180))
    {
    	menubar = new wxMenuBar;
    	sideframes = new wxMenu;
    
    	sideframes->Append(ID_SF1, _T("SF1"));
    	sideframes->Append(ID_SF2, _T("SF2"));
    	menubar->Append(sideframes, _T("Sideframes"));
    
    	SetMenuBar(menubar);
    
    	Connect(ID_SF2, wxEVT_COMMAND_MENU_SELECTED,
    		wxCommandEventHandler(MainFrame::f_SF2));
    
    	Centre();
    }
    
    void MainFrame::f_SF2(wxCommandEvent& event)
    {
    	//erstelle einen neuen Dialog
    	wxDialog *sf2 = new wxDialog(NULL, ID_DIAL2, "SF2", wxDefaultPosition, wxSize(310,270));
    
    	//designen des SideFrames
    		wxPanel *panel = new wxPanel(this, -1);
    
    		wxColour col1;
    		col1.Set(_T("#000000"));
    
    		panel->SetBackgroundColour(col1);
    
    	//wie sieht der Dialog aus?	
    	sf2->ShowModal();
    }
    

    Fehlermeldungen kommen übrigens keine.

    Edit: Eine Frage rausgenommen, die Antwort habe ich selbst gefunden...



  • Ich merke schon, an zwei Stellen habe ich einen totalen Hänger... Und entweder kennt sich hier wirklich niemand aus (das ist doch eigentlich eine Anfängerfrage (die leider in keinem Tutorial behandelt wird) oder interessiert sich für den Part des Forumslebens wo man Antworten geben sollte... In beiden Fällen sollte man wxWidgets aus dem Forum als Themengebiet rausnehmen. Es demotiviert nur...



  • Wieso kannst du den Dialog nicht gestalten?

    Ich nehme für meine Dialoge und Frames generell den wxFormBuilder und speichere den Output als wxRC. Dann lade ich das einfach aus der RC Datei und brauch mich nicht mit dem Code für das Layout rumschlagen.

    Mehr dazu:
    http://docs.wxwidgets.org/trunk/overview_xrc.html


Anmelden zum Antworten