MFC zu wxWidgets



  • Hallo override

    würde ich gerne, hab aber keinen Server zum hochladen.

    Also zum Theme, versuche es mal so zu beschreiben(arbeite mit Visual C++ 2008,wxApplication Wizard, wxFormBuilder)

    Ich hab ein Hauptfenster (MainFrame).
    Dann gibt wxFormBuilder standartmäßig ein MainPanel(MainPanel1) mit einem Button rechts unten vor.
    Nun lege ich ein Zweites MainPanel (MainPanel2) an mit einem Button links unten an(Class erstellen lassen und eine ButtonClick Funktion hinzufügen).
    Wenn ich nun das Projekt ausführe soll folgendes geschehen.

    MainFrame/MainPanel1/Button rechts wird aktiv, dann
    MainFrame/MainPanel1/Button rechts clicken

    -gewolltes Ereignis:
    MainFrame/MainPanel2/Button links soll aktiv werden und
    MainFrame/MainPanel1/Button rechts

    soll nicht mehr sichtbar sein.

    Dann

    MainFrame/MainPanel2/Button links clicken, wieder zurück zum Ausgangspunkt
    MainFrame/MainPanel1/Button rechts wird aktiv.

    wie löst man die Aufgabe?

    Gruß Califax


  • Mod

    In wxWidgets gibt es kein direktes SDI Interface, wie es in MFC es existiert.
    Grundsätzlich musst du entweder dir selber einen kleinen Controller schreiben, der dann jeweils die Views wechselt, oder dir mal das wxDocument/View Framework ansehen.



  • im wxFormbuilder:
    Lege das Hauptfenster als wxFrame an, dann zwei wxPanel aus dem gleichen Register (die Panels sind nicht dem wxFrame untergeordnet).

    Im Code:
    Die beiden Panels erstellst du in OnInit und machst bei einem Show() und dem anderen Hide().



  • Hallo

    Hab ein Lösungsansatz gefunden.
    Die Childfenster können jetzt im Frame über das Menu umgeschalten werden.
    Aber es besteht noch ein Problem.
    Wie kann ich das Umschalten der Childfenster aus den Childfenster herraus anstoßen.
    Hier das Projekt.

    FiF_01.h

    #ifndef FIF_01_H
    #define FIF_01_H
    
    class MyApp : public wxApp
    {
    public:
    	virtual bool OnInit();
    };
    
    #endif // FIF_01_H
    

    FiF_01.cpp

    #include "FiF_01.h"
    #include "FiF_01Frame.h"
    
    IMPLEMENT_APP( MyApp );
    
    bool MyApp::OnInit()
    {
    	//erstellen der FiF_01Frame Instanz:
    	FiF_01Frame* frame = new FiF_01Frame();
    	// Hier wird das Icon festgelegt
    	frame->SetIcon( wxICON( amain ) );
    	//Mit Show startet das Hauptfenster
    	frame->Show();
    	return true;
    }
    

    FiF_01About.h

    #ifndef FIF_01ABOUT_H
    #define FIF_01ABOUT_H
    
    #include "FiF_01_GUI.h"
    
    class FiF_01About : public AboutDlg
    {
    public:
    	FiF_01About( wxWindow* parent );
    };
    
    #endif // FIF_01ABOUT_H
    

    FiF_01About.cpp

    #include "FiF_01.h"
    #include "FiF_01About.h"
    #include "fileversion.h"
    
    // About dialog's event loop.
    // Not needed because we only have a default OK button.
    //BEGIN_EVENT_TABLE( FiF_01About, AboutDlg )
    	//EVT_BUTTON( wxID_OK, FiF_01\1::OnOK )
    //END_EVENT_TABLE()
    
    FiF_01\1::FiF_01About( wxWindow* parent )
    	: AboutDlg( parent, -1 )
    {
    	wxFileVersion ver;
    
    	// Open the current executable's version information.
    	ver.Open();
    
    	// Get the file version.
    	wxString fileVersion = ver.GetFixedFileVersion( true );
    
    	// Set the version label.
    	m_staticVersion->SetLabel( m_staticVersion->GetLabel() + wxT(" ") + fileVersion );
    
    	// Resize to fit the contents.
    	this->GetSizer()->SetSizeHints( this );
    }
    

    FiF_01Frame.h

    #ifndef FIF_01FRAME_H
    #define FIF_01FRAME_H
    
    #include "FiF_01_GUI.h"
    
    class FiF_01Frame : public MainFrame
    {
    public:
    	FiF_01Frame( wxWindow *parent = NULL, int id = -1 );
    	~FiF_01Frame();
    private:
    	void OnExit( wxCommandEvent& event );
    	void OnAbout( wxCommandEvent& event);
    	void OnPanel1 (wxCommandEvent& event);
    	void OnPanel2 (wxCommandEvent& event );
    
    public:
    	void Fenster_Umschalter(int size_id = 0);
    	wxBoxSizer* sizer;
    	wxPanel* panel;
    	wxPanel* panel2;
    
    	DECLARE_EVENT_TABLE();
    
    };
    #endif // FIF_01FRAME_H
    

    FiF_01Frame.cpp

    #include "FiF_01Frame.h"
    #include "FiF_01Panel.h"
    #include "FiF_01Panel2.h"
    #include "FiF_01About.h"
    
    BEGIN_EVENT_TABLE( FiF_01Frame, MainFrame )
    	EVT_MENU( ID_FILE_EXIT, FiF_01Frame::OnExit )
    	EVT_MENU( ID_HELP_ABOUT, FiF_01Frame::OnAbout )
    	EVT_MENU( wxID_PANEL1, FiF_01Frame::OnPanel1 )
    	EVT_MENU( wxID_PANEL2, FiF_01Frame::OnPanel2 )
    END_EVENT_TABLE()
    
    FiF_01Frame::FiF_01Frame( wxWindow *parent, int id )
    	: MainFrame( parent, id )
    {
    	Fenster_Umschalter();
    }
    
    void FiF_01Frame::OnExit( wxCommandEvent& event )
    {
    	Close();
    }
    
    void FiF_01Frame::OnAbout( wxCommandEvent& event )
    {
    	FiF_01About* about = new FiF_01About( this );
    	about->Show();
    
    }
    void FiF_01Frame::OnPanel1 (wxCommandEvent& event )
    {
    	sizer->Remove(panel);
    	delete panel;
    	sizer->Layout();
    	Fenster_Umschalter(0);
    
    }
    void FiF_01Frame::OnPanel2 (wxCommandEvent& event )
    {
        sizer->Remove(panel);
    	delete panel;
    	sizer->Layout();
    	Fenster_Umschalter(1);
    
    }
    
    FiF_01Frame::~FiF_01Frame()
    {
    }
    
    void FiF_01Frame::Fenster_Umschalter(int size_id)
    {
    
    	switch (size_id)
    	{
    		case 0:
    			 panel = new FiF_01Panel( this );
    			break;
    		case 1:
    			panel = new FiF_01Panel2(this);
    			break;
    	}
    	// Hier wird nun der eigentliche Fensterinhalt erstellt 
        // Der Sizer wird als erstes erstellt,er nimmt später die Kindfenster von MyFrame auf.
    	sizer = new wxBoxSizer( wxVERTICAL );
    
    	// Nach der Erzeugung wird das Panels dem Sizer übergeben.
    	sizer->Add( panel, 1, wxEXPAND );
    	wxSize panelSize = panel->GetSize();
    	this->SetSizerAndFit( sizer );
    	this->SetClientSize( panelSize );	
    
    }
    

    FiF_01Panel.h

    #ifndef FIF_01PANEL_H
    #define FIF_01PANEL_H
    
    #include "FiF_01_GUI.h"
    #include "FiF_01Frame.h"
    
    class FiF_01Panel : public MainPanel
    {
    public:
    	FiF_01Panel( wxWindow* parent );
    	~FiF_01Panel();
    
    private:
    	void OnOK( wxCommandEvent& event );
    	FiF_01Frame *hauptfenster;
    	DECLARE_EVENT_TABLE();
    };
    
    #endif //FIF_01PANEL_H
    

    FiF_01Panel.cpp

    #include "FiF_01Panel.h"
    
    BEGIN_EVENT_TABLE(FiF_01Panel, MainPanel)
    	EVT_BUTTON(ID_MAIN_OK, FiF_01Panel::OnOK)
    END_EVENT_TABLE()
    
    FiF_01Panel::FiF_01Panel( wxWindow* parent )
    	: MainPanel( parent )
    {
    }
    
    FiF_01Panel::~FiF_01Panel()
    {
    }
    
    void FiF_01Panel::OnOK( wxCommandEvent& event )
    {
    	wxMessageBox( wxT("Kindfenster 1") );
    }
    

    FiF_01Panel2.h

    #ifndef __FiF_01Panel2__
    #define __FiF_01Panel2__
    
    /**
    @file
    Subclass of MainPanel2, which is generated by wxFormBuilder.
    */
    
    #include "FiF_01_GUI.h"
    
    /** Implementing MainPanel2 */
    class FiF_01Panel2 : public MainPanel2
    {
    public:
    	/** Constructor */
    	FiF_01Panel2( wxWindow* parent );
    	~FiF_01Panel2();
    	DECLARE_EVENT_TABLE();
    private:
    	void OnOK2( wxCommandEvent& event);
    };
    
    #endif // __FiF_01Panel2__
    

    FiF_01Panel2.cpp

    #include "FiF_01Panel2.h"
    
    BEGIN_EVENT_TABLE(FiF_01Panel2, MainPanel2)
    //	EVT_BUTTON(ID_MAIN_OK, FiF_01Panel::OnOK)
    END_EVENT_TABLE()
    
    FiF_01Panel2::FiF_01Panel2( wxWindow* parent )
    :
    MainPanel2( parent )
    {
    
    }
    
    FiF_01Panel2::~FiF_01Panel2()
    {
    }
    
    void FiF_01Panel2::OnOK2( wxCommandEvent& event)
    {
    	wxMessageBox( wxT("Kindfenster 2") );
    }
    

    fileversion.h

    /*************************************************************
    *
    * Author:	upCASE (wxForum)
    * Source:	http://wxforum.shadonet.com/viewtopic.php?t=8193
    * Licence:	wxWidgets Licence
    * Comment:	Used to retrieve the version information
    *      		from a resource in Windows.
    *
    *************************************************************/
    
    #ifndef __FILEVERSION_H_
    #define __FILEVERSION_H_
    
    #include <wx/wx.h>
    
    #ifdef __WXMSW__
    
    class wxFileVersion
    {
    public:
    	wxFileVersion();
    	~wxFileVersion();
    
    	bool    Open( wxString strModuleName = wxEmptyString );
    	void    Close();
    
    	wxString QueryValue( wxString strValueName, unsigned long dwLangCharset = 0 );
    
    	wxString GetFileDescription()  { return QueryValue( wxT("FileDescription") );  };
    	wxString GetFileVersion()      { return QueryValue( wxT("FileVersion") );      };
    	wxString GetInternalName()     { return QueryValue( wxT("InternalName") );     };
    	wxString GetCompanyName()      { return QueryValue( wxT("CompanyName") );      };
    	wxString GetLegalCopyright()   { return QueryValue( wxT("LegalCopyright") );   };
    	wxString GetOriginalFilename() { return QueryValue( wxT("OriginalFilename") ); };
    	wxString GetProductName()      { return QueryValue( wxT("ProductName") );      };
    	wxString GetProductVersion()   { return QueryValue( wxT("ProductVersion") );   };
    
    	bool     GetFixedInfo( VS_FIXEDFILEINFO& vsffi );
    	wxString GetFixedFileVersion( bool HumanlyReadable = false );
    	wxString GetFixedProductVersion( bool HumanlyReadable = false );
    
    protected:
    	unsigned char*  m_lpVersionData;
    	unsigned long   m_dwLangCharset;
    };
    
    #endif //__WXMSW__
    #endif  // __FILEVERSION_H_
    

    fileversion.cpp

    /*************************************************************
    *
    * Author:	upCASE (wxForum)
    * Source:	http://wxforum.shadonet.com/viewtopic.php?t=8193
    * Licence:	wxWidgets Licence
    * Comment:	Used to retrieve the version information
    *      	from a resource in Windows.
    *
    *************************************************************/
    
    #include "fileversion.h"
    
    #ifdef __WXMSW__
    
    wxFileVersion::wxFileVersion()
    {
    	m_lpVersionData = NULL;
    	m_dwLangCharset = 0;
    }
    
    wxFileVersion::~wxFileVersion()
    {
    	Close();
    }
    
    void wxFileVersion::Close()
    {
    	delete[] m_lpVersionData;
    	m_lpVersionData = NULL;
    	m_dwLangCharset = 0;
    }
    
    bool wxFileVersion::Open( wxString strModuleName )
    {
    	if ( strModuleName.IsEmpty() )
    	{
    		wxChar szExeName[MAX_PATH];
    		::GetModuleFileName( NULL, szExeName, sizeof( szExeName ) );
    		strModuleName = szExeName;
    	}
    
    	wxASSERT( !strModuleName.IsEmpty() );
    	wxASSERT( m_lpVersionData == NULL );
    
    	unsigned long dwHandle;
    	unsigned long dwDataSize = ::GetFileVersionInfoSize( strModuleName.c_str(), &dwHandle );
    	if ( dwDataSize == 0 )
    	{
    		return false;
    	}
    
    	m_lpVersionData = new unsigned char[dwDataSize];
    	if ( !::GetFileVersionInfo( strModuleName.c_str(), dwHandle, dwDataSize,
    		(void**)m_lpVersionData ) )
    	{
    		Close();
    		return false;
    	}
    
    	unsigned int nQuerySize;
    	unsigned long* pTransTable;
    	if ( !::VerQueryValue(m_lpVersionData, wxT("\\VarFileInfo\\Translation"),
    		(void **)&pTransTable, &nQuerySize ) )
    	{
    		Close();
    		return false;
    	}
    
    	m_dwLangCharset = MAKELONG( HIWORD( pTransTable[0] ), LOWORD( pTransTable[0] ) );
    
    	return true;
    }
    
    wxString wxFileVersion::QueryValue( wxString strValueName, unsigned long dwLangCharset /* = 0*/ )
    {
    	wxASSERT( m_lpVersionData != NULL );
    	if ( m_lpVersionData == NULL )
    	{
    		return wxEmptyString;
    	}
    
    	if ( dwLangCharset == 0 )
    	{
    		dwLangCharset = m_dwLangCharset;
    	}
    
    	unsigned int nQuerySize;
    	void* lpData;
    	wxString strValue, strBlockName;
    	strBlockName = wxString::Format( wxT("\\StringFileInfo\\%08lx\\%s"), dwLangCharset, strValueName.c_str() );
    
    	if ( ::VerQueryValue( (void **)m_lpVersionData, (wxChar*)strBlockName.c_str(),
    		&lpData, &nQuerySize ) )
    	{
    		strValue = wxString::FromAscii( (char*)lpData );
    	}
    
    	return strValue;
    }
    
    bool wxFileVersion::GetFixedInfo( VS_FIXEDFILEINFO& vsffi )
    {
    	wxASSERT( m_lpVersionData != NULL );
    	if ( m_lpVersionData == NULL )
    	{
    		return false;
    	}
    
    	unsigned int nQuerySize;
    	VS_FIXEDFILEINFO* pVsffi;
    	if ( ::VerQueryValue( (void **)m_lpVersionData, wxT("\\"),
    		(void**)&pVsffi, &nQuerySize ) )
    	{
    		vsffi = *pVsffi;
    		return true;
    	}
    
    	return false;
    }
    
    wxString wxFileVersion::GetFixedFileVersion( bool HumanlyReadable /*= false */ )
    {
    	wxString strVersion;
    	VS_FIXEDFILEINFO vsffi;
    
    	if ( GetFixedInfo( vsffi ) )
    	{
    		if ( HumanlyReadable )
    		{
    			strVersion = wxString::Format ( wxT("%u.%u%u.%u"), HIWORD( vsffi.dwFileVersionMS ),
    				LOWORD( vsffi.dwFileVersionMS ),
    				HIWORD( vsffi.dwFileVersionLS ),
    				LOWORD( vsffi.dwFileVersionLS ) );
    		}
    		else
    		{
    			strVersion = wxString::Format ( wxT("%u,%u,%u,%u"), HIWORD( vsffi.dwFileVersionMS ),
    				LOWORD( vsffi.dwFileVersionMS ),
    				HIWORD( vsffi.dwFileVersionLS ),
    				LOWORD( vsffi.dwFileVersionLS ) );
    		}
    	}
    
    	return strVersion;
    }
    
    wxString wxFileVersion::GetFixedProductVersion( bool HumanlyReadable /*= false */ )
    {
    	wxString strVersion;
    	VS_FIXEDFILEINFO vsffi;
    
    	if ( GetFixedInfo(vsffi) )
    	{
    		if ( HumanlyReadable )
    		{
    			strVersion = wxString::Format ( wxT("%u.%u%u.%u"), HIWORD( vsffi.dwProductVersionMS ),
    				LOWORD( vsffi.dwProductVersionMS ),
    				HIWORD( vsffi.dwProductVersionLS ),
    				LOWORD( vsffi.dwProductVersionLS ) );
    		}
    		else
    		{
    			strVersion = wxString::Format ( wxT("%u,%u,%u,%u"), HIWORD( vsffi.dwProductVersionMS ),
    				LOWORD( vsffi.dwProductVersionMS ),
    				HIWORD( vsffi.dwProductVersionLS ),
    				LOWORD( vsffi.dwProductVersionLS ) );
    		}
    	}
    
    	return strVersion;
    }
    
    #endif //__WXMSW__
    

    FiF_01_GUI.h

    ///////////////////////////////////////////////////////////////////////////
    // C++ code generated with wxFormBuilder (version Mar  6 2009)
    // http://www.wxformbuilder.org/
    //
    // PLEASE DO "NOT" EDIT THIS FILE!
    ///////////////////////////////////////////////////////////////////////////
    
    #ifndef __FiF_01_GUI__
    #define __FiF_01_GUI__
    
    #include <wx/statusbr.h>
    #include <wx/gdicmn.h>
    #include <wx/font.h>
    #include <wx/colour.h>
    #include <wx/settings.h>
    #include <wx/string.h>
    #include <wx/bitmap.h>
    #include <wx/image.h>
    #include <wx/icon.h>
    #include <wx/menu.h>
    #include <wx/frame.h>
    #include <wx/stattext.h>
    #include <wx/button.h>
    #include <wx/sizer.h>
    #include <wx/panel.h>
    #include <wx/statbmp.h>
    #include <wx/statline.h>
    #include <wx/statbox.h>
    #include <wx/dialog.h>
    
    ///////////////////////////////////////////////////////////////////////////
    
    #define ID_DEFAULT wxID_ANY // Default
    #define ID_FILE_EXIT 1000
    #define wxID_PANEL1 1001
    #define wxID_PANEL2 1002
    #define ID_HELP_ABOUT 1003
    #define ID_PANEL1 1004
    #define ID_MAIN_OK 1005
    #define ID_MAIN_OK2 1006
    #define ID_ABOUT_ICON 1007
    #define ID_ABOUT_APPNAME 1008
    #define ID_ABOUT_VERSION 1009
    #define ID_ABOUT_COPYRIGHT 1010
    
    ///////////////////////////////////////////////////////////////////////////////
    /// Class MainFrame
    ///////////////////////////////////////////////////////////////////////////////
    class MainFrame : public wxFrame 
    {
    	private:
    
    	protected:
    		wxStatusBar* m_statusBar;
    		wxMenuBar* m_menubar;
    		wxMenu* m_fileMenu;
    		wxMenu* m_menu3;
    		wxMenu* m_helpMenu;
    
    		// Virtual event handlers, overide them in your derived class
    		virtual void OnPanel1( wxCommandEvent& event ) { event.Skip(); }
    		virtual void OnPanel2( wxCommandEvent& event ) { event.Skip(); }
    
    	public:
    
    		MainFrame( wxWindow* parent, wxWindowID id = ID_DEFAULT, const wxString& title = wxT("FiF_01"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 500,300 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL );
    		~MainFrame();
    
    };
    
    ///////////////////////////////////////////////////////////////////////////////
    /// Class MainPanel
    ///////////////////////////////////////////////////////////////////////////////
    class MainPanel : public wxPanel 
    {
    	private:
    
    	protected:
    		wxStaticText* m_staticText5;
    
    		wxButton* m_OK;
    
    		// Virtual event handlers, overide them in your derived class
    		virtual void OnOK( wxCommandEvent& event ) { event.Skip(); }
    
    	public:
    
    		MainPanel( wxWindow* parent, wxWindowID id = ID_PANEL1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 500,300 ), long style = wxTAB_TRAVERSAL );
    		~MainPanel();
    
    };
    
    ///////////////////////////////////////////////////////////////////////////////
    /// Class MainPanel2
    ///////////////////////////////////////////////////////////////////////////////
    class MainPanel2 : public wxPanel 
    {
    	private:
    
    	protected:
    		wxStaticText* m_staticText4;
    
    		wxButton* m_OK2;
    
    		// Virtual event handlers, overide them in your derived class
    		virtual void OnOK2( wxCommandEvent& event ) { event.Skip(); }
    
    	public:
    
    		MainPanel2( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 500,300 ), long style = wxTAB_TRAVERSAL );
    		~MainPanel2();
    
    };
    
    ///////////////////////////////////////////////////////////////////////////////
    /// Class AboutDlg
    ///////////////////////////////////////////////////////////////////////////////
    class AboutDlg : public wxDialog 
    {
    	private:
    
    	protected:
    		wxStaticBitmap* m_icon;
    		wxStaticText* m_staticAppName;
    		wxStaticText* m_staticVersion;
    		wxStaticLine* m_staticline1;
    		wxStaticText* m_staticCopyright;
    		wxStdDialogButtonSizer* m_aboutDialogButtonSizer;
    		wxButton* m_aboutDialogButtonSizerOK;
    
    	public:
    
    		AboutDlg( wxWindow* parent, wxWindowID id = ID_DEFAULT, const wxString& title = wxT("About FiF_01..."), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );
    		~AboutDlg();
    
    };
    
    #endif //__FiF_01_GUI__
    

    FiF_01_GUI.cpp

    ///////////////////////////////////////////////////////////////////////////
    // C++ code generated with wxFormBuilder (version Mar  6 2009)
    // http://www.wxformbuilder.org/
    //
    // PLEASE DO "NOT" EDIT THIS FILE!
    ///////////////////////////////////////////////////////////////////////////
    
    #include "FiF_01_GUI.h"
    
    ///////////////////////////////////////////////////////////////////////////
    
    MainFrame::MainFrame( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style )
    {
    	this->SetSizeHints( wxDefaultSize, wxDefaultSize );
    
    	m_statusBar = this->CreateStatusBar( 1, wxST_SIZEGRIP, ID_DEFAULT );
    	m_menubar = new wxMenuBar( 0 );
    	m_fileMenu = new wxMenu();
    	wxMenuItem* fileExit;
    	fileExit = new wxMenuItem( m_fileMenu, ID_FILE_EXIT, wxString( wxT("E&xit") ) + wxT('\t') + wxT("Alt+F4"), wxT("Exit the application"), wxITEM_NORMAL );
    	m_fileMenu->Append( fileExit );
    
    	m_menubar->Append( m_fileMenu, wxT("&File") );
    
    	m_menu3 = new wxMenu();
    	wxMenuItem* Panel1;
    	Panel1 = new wxMenuItem( m_menu3, wxID_PANEL1, wxString( wxT("zu Panel1") ) + wxT('\t') + wxT("F2"), wxEmptyString, wxITEM_NORMAL );
    	m_menu3->Append( Panel1 );
    
    	wxMenuItem* Panel2;
    	Panel2 = new wxMenuItem( m_menu3, wxID_PANEL2, wxString( wxT("zu Panel2") ) + wxT('\t') + wxT("F3"), wxEmptyString, wxITEM_NORMAL );
    	m_menu3->Append( Panel2 );
    
    	m_menubar->Append( m_menu3, wxT("KindFenster auswählen") );
    
    	m_helpMenu = new wxMenu();
    	wxMenuItem* helpAbout;
    	helpAbout = new wxMenuItem( m_helpMenu, ID_HELP_ABOUT, wxString( wxT("&About") ) + wxT('\t') + wxT("F1"), wxT("Show info about this application"), wxITEM_NORMAL );
    	m_helpMenu->Append( helpAbout );
    
    	m_menubar->Append( m_helpMenu, wxT("&Help") );
    
    	this->SetMenuBar( m_menubar );
    
    	// Connect Events
    	this->Connect( Panel1->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainFrame::OnPanel1 ) );
    	this->Connect( Panel2->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainFrame::OnPanel2 ) );
    }
    
    MainFrame::~MainFrame()
    {
    	// Disconnect Events
    	this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainFrame::OnPanel1 ) );
    	this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainFrame::OnPanel2 ) );
    }
    
    MainPanel::MainPanel( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style )
    {
    	wxBoxSizer* mainSizer;
    	mainSizer = new wxBoxSizer( wxVERTICAL );
    
    	m_staticText5 = new wxStaticText( this, wxID_ANY, wxT("Panel1"), wxDefaultPosition, wxDefaultSize, 0 );
    	m_staticText5->Wrap( -1 );
    	m_staticText5->SetFont( wxFont( 90, 70, 90, 90, false, wxEmptyString ) );
    
    	mainSizer->Add( m_staticText5, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
    
    	mainSizer->Add( 0, 0, 1, 0, 0 );
    
    	m_OK = new wxButton( this, ID_MAIN_OK, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0 );
    	mainSizer->Add( m_OK, 0, wxALL|wxALIGN_RIGHT|wxALIGN_BOTTOM, 5 );
    
    	this->SetSizer( mainSizer );
    	this->Layout();
    
    	// Connect Events
    	m_OK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainPanel::OnOK ), NULL, this );
    }
    
    MainPanel::~MainPanel()
    {
    	// Disconnect Events
    	m_OK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainPanel::OnOK ), NULL, this );
    }
    
    MainPanel2::MainPanel2( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style )
    {
    	wxBoxSizer* bSizer5;
    	bSizer5 = new wxBoxSizer( wxVERTICAL );
    
    	m_staticText4 = new wxStaticText( this, wxID_ANY, wxT("Panel2"), wxDefaultPosition, wxDefaultSize, 0 );
    	m_staticText4->Wrap( -1 );
    	m_staticText4->SetFont( wxFont( 90, 70, 90, 90, false, wxEmptyString ) );
    
    	bSizer5->Add( m_staticText4, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
    
    	bSizer5->Add( 0, 0, 1, wxEXPAND, 5 );
    
    	m_OK2 = new wxButton( this, ID_MAIN_OK2, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0 );
    	bSizer5->Add( m_OK2, 0, wxALL, 5 );
    
    	this->SetSizer( bSizer5 );
    	this->Layout();
    
    	// Connect Events
    	m_OK2->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainPanel2::OnOK2 ), NULL, this );
    }
    
    MainPanel2::~MainPanel2()
    {
    	// Disconnect Events
    	m_OK2->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainPanel2::OnOK2 ), NULL, this );
    }
    
    AboutDlg::AboutDlg( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
    {
    	this->SetSizeHints( wxDefaultSize, wxDefaultSize );
    
    	wxBoxSizer* mainSizer;
    	mainSizer = new wxBoxSizer( wxVERTICAL );
    
    	wxStaticBoxSizer* infoSizer;
    	infoSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, wxEmptyString ), wxVERTICAL );
    
    	wxBoxSizer* bSizer10;
    	bSizer10 = new wxBoxSizer( wxHORIZONTAL );
    
    	m_icon = new wxStaticBitmap( this, ID_ABOUT_ICON, wxICON( amain ), wxDefaultPosition, wxDefaultSize, 0 );
    	bSizer10->Add( m_icon, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
    
    	wxBoxSizer* textSizer;
    	textSizer = new wxBoxSizer( wxVERTICAL );
    
    	m_staticAppName = new wxStaticText( this, ID_ABOUT_APPNAME, wxT("FiF_01"), wxDefaultPosition, wxDefaultSize, 0 );
    	m_staticAppName->Wrap( -1 );
    	m_staticAppName->SetFont( wxFont( 10, 70, 90, 92, false, wxT("Arial") ) );
    
    	textSizer->Add( m_staticAppName, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
    
    	m_staticVersion = new wxStaticText( this, ID_ABOUT_VERSION, wxT("Version"), wxDefaultPosition, wxDefaultSize, 0 );
    	m_staticVersion->Wrap( -1 );
    	textSizer->Add( m_staticVersion, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
    
    	bSizer10->Add( textSizer, 0, wxALIGN_CENTER_VERTICAL, 5 );
    
    	infoSizer->Add( bSizer10, 1, 0, 5 );
    
    	m_staticline1 = new wxStaticLine( this, ID_DEFAULT, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
    	infoSizer->Add( m_staticline1, 0, wxALL|wxEXPAND, 5 );
    
    	m_staticCopyright = new wxStaticText( this, ID_ABOUT_COPYRIGHT, wxT("Copyright © 2006"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE );
    	m_staticCopyright->Wrap( -1 );
    	infoSizer->Add( m_staticCopyright, 0, wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
    
    	mainSizer->Add( infoSizer, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
    
    	m_aboutDialogButtonSizer = new wxStdDialogButtonSizer();
    	m_aboutDialogButtonSizerOK = new wxButton( this, wxID_OK );
    	m_aboutDialogButtonSizer->AddButton( m_aboutDialogButtonSizerOK );
    	m_aboutDialogButtonSizer->Realize();
    	mainSizer->Add( m_aboutDialogButtonSizer, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
    
    	this->SetSizer( mainSizer );
    	this->Layout();
    	mainSizer->Fit( this );
    }
    
    AboutDlg::~AboutDlg()
    {
    }
    

    FiF_01.fbp
    [code]
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <wxFormBuilder_Project>
    <FileVersion major="1" minor="10" />
    <object class="Project" expanded="1">
    <property name="class_decoration"></property>
    <property name="code_generation">C++</property>
    <property name="disconnect_events">1</property>
    <property name="encoding">UTF-8</property>
    <property name="event_generation">connect</property>
    <property name="file">FiF_01_GUI</property>
    <property name="first_id">1000</property>
    <property name="help_provider">none</property>
    <property name="internationalize">0</property>
    <property name="name">FiF_01</property>
    <property name="namespace"></property>
    <property name="path">.</property>
    <property name="precompiled_header"></property>
    <property name="relative_path">1</property>
    <property name="use_enum">0</property>
    <property name="use_microsoft_bom">1</property>
    <object class="Frame" expanded="1">
    <property name="bg"></property>
    <property name="center"></property>
    <property name="context_help"></property>
    <property name="enabled">1</property>
    <property name="event_handler">impl_virtual</property>
    <property name="extra_style"></property>
    <property name="fg"></property>
    <property name="font"></property>
    <property name="hidden">0</property>
    <property name="id">ID_DEFAULT</property>
    <property name="maximum_size"></property>
    <property name="minimum_size"></property>
    <property name="name">MainFrame</property>
    <property name="pos"></property>
    <property name="size">500,300</property>
    <property name="style">wxDEFAULT_FRAME_STYLE</property>
    <property name="subclass"></property>
    <property name="title">FiF_01</property>
    <property name="tooltip"></property>
    <property name="validator_data_type"></property>
    <property name="validator_style">wxFILTER_NONE</property>
    <property name="validator_type">wxDefaultValidator</property>
    <property name="validator_variable"></property>
    <property name="window_extra_style"></property>
    <property name="window_name"></property>
    <property name="window_style">wxTAB_TRAVERSAL</property>
    <property name="xrc_skip_sizer">1</property>
    <event name="OnActivate"></event>
    <event name="OnActivateApp"></event>
    <event name="OnChar"></event>
    <event name="OnClose"></event>
    <event name="OnEnterWindow"></event>
    <event name="OnEraseBackground"></event>
    <event name="OnHibernate"></event>
    <event name="OnIconize"></event>
    <event name="OnIdle"></event>
    <event name="OnKeyDown"></event>
    <event name="OnKeyUp"></event>
    <event name="OnKillFocus"></event>
    <event name="OnLeaveWindow"></event>
    <event name="OnLeftDClick"></event>
    <event name="OnLeftDown"></event>
    <event name="OnLeftUp"></event>
    <event name="OnMiddleDClick"></event>
    <event name="OnMiddleDown"></event>
    <event name="OnMiddleUp"></event>
    <event name="OnMotion"></event>
    <event name="OnMouseEvents"></event>
    <event name="OnMouseWheel"></event>
    <event name="OnPaint"></event>
    <event name="OnRightDClick"></event>
    <event name="OnRightDown"></event>
    <event name="OnRightUp"></event>
    <event name="OnSetFocus"></event>
    <event name="OnSize"></event>
    <event name="OnUpdateUI"></event>
    <object class="wxStatusBar" expanded="1">
    <property name="bg"></property>
    <property name="context_help"></property>
    <property name="enabled">1</property>
    <property name="fg"></property>
    <property name="fields">1</property>
    <property name="font"></property>
    <property name="hidden">0</property>
    <property name="id">ID_DEFAULT</property>
    <property name="maximum_size"></property>
    <property name="minimum_size"></property>
    <property name="name">m_statusBar</property>
    <property name="permission">protected</property>
    <property name="pos"></property>
    <property name="size"></property>
    <property name="style">wxST_SIZEGRIP</property>
    <property name="subclass"></property>
    <property name="tooltip"></property>
    <property name="validator_data_type"></property>
    <property name="validator_style">wxFILTER_NONE</property>
    <property name="validator_type">wxDefaultValidator</property>
    <property name="validator_variable"></property>
    <property name="window_extra_style"></property>
    <property name="window_name"></property>
    <property name="window_style"></property>
    <event name="OnChar"></event>
    <event name="OnEnterWindow"></event>
    <event name="OnEraseBackground"></event>
    <event name="OnKeyDown"></event>
    <event name="OnKeyUp"></event>
    <event name="OnKillFocus"></event>
    <event name="OnLeaveWindow"></event>
    <event name="OnLeftDClick"></event>
    <event name="OnLeftDown"></event>
    <event name="OnLeftUp"></event>
    <event name="OnMiddleDClick"></event>
    <event name="OnMiddleDown"></event>
    <event name="OnMiddleUp"></event>
    <event name="OnMotion"></event>
    <event name="OnMouseEvents"></event>
    <event name="OnMouseWheel"></event>
    <event name="OnPaint"></event>
    <event name="OnRightDClick"></event>
    <event name="OnRightDown"></event>
    <event name="OnRightUp"></event>
    <event name="OnSetFocus"></event>
    <event name="OnSize"></event>
    <event name="OnUpdateUI"></event>
    </object>
    <object class="wxMenuBar" expanded="1">
    <property name="bg"></property>
    <property name="context_help"></property>
    <property name="enabled">1</property>
    <property name="fg"></property>
    <property name="font"></property>
    <property name="hidden">0</property>
    <property name="id">ID_DEFAULT</property>
    <property name="label">MainMenuBar</property>
    <property name="maximum_size"></property>
    <property name="minimum_size"></property>
    <property name="name">m_menubar</property>
    <property name="permission">protected</property>
    <property name="pos"></property>
    <property name="size"></property>
    <property name="style"></property>
    <property name="subclass"></property>
    <property name="tooltip"></property>
    <property name="validator_data_type"></property>
    <property name="validator_style">wxFILTER_NONE</property>
    <property name="validator_type">wxDefaultValidator</property>
    <property name="validator_variable"></property>
    <property name="window_extra_style"></property>
    <property name="window_name"></property>
    <property name="window_style"></property>
    <event name="OnChar"></event>
    <event name="OnEnterWindow"></event>
    <event name="OnEraseBackground"></event>
    <event name="OnKeyDown"></event>
    <event name="OnKeyUp"></event>
    <event name="OnKillFocus"></event>
    <event name="OnLeaveWindow"></event>
    <event name="OnLeftDClick"></event>
    <event name="OnLeftDown"></event>
    <event name="OnLeftUp"></event>
    <event name="OnMiddleDClick"></event>
    <event name="OnMiddleDown"></event>
    <event name="OnMiddleUp"></event>
    <event name="OnMotion"></event>
    <event name="OnMouseEvents"></event>
    <event name="OnMouseWheel"></event>
    <event name="OnPaint"></event>
    <event name="OnRightDClick"></event>
    <event name="OnRightDown"></event>
    <event name="OnRightUp"></event>
    <event name="OnSetFocus"></event>
    <event name="OnSize"></event>
    <event name="OnUpdateUI"></event>
    <object class="wxMenu" expanded="1">
    <property name="label">&File</property>
    <property name="name">m_fileMenu</property>
    <property name="permission">protected</property>
    <object class="wxMenuItem" expanded="1">
    <property name="bitmap"></property>
    <property name="checked">0</property>
    <property name="enabled">1</property>
    <property name="help">Exit the application</property>
    <property name="id">ID_FILE_EXIT</property>
    <property name="kind">wxITEM_NORMAL</property>
    <property name="label">E&xit</property>
    <property name="name">fileExit</property>
    <property name="permission">none</property>
    <property name="shortcut">Alt+F4</property>
    <property name="unchecked_bitmap"></property>
    <event name="OnMenuSelection"></event>
    <event name="OnUpdateUI"></event>
    </object>
    </object>
    <object class="wxMenu" expanded="1">
    <property name="label">KindFenster auswählen</property>
    <property name="name">m_menu3</property>
    <property name="permission">protected</property>
    <object class="wxMenuItem" expanded="1">
    <property name="bitmap"></property>
    <property name="checked">0</property>
    <property name="enabled">1</property>
    <property name="help"></property>
    <property name="id">wxID_PANEL1</property>
    <property name="kind">wxITEM_NORMAL</property>
    <property name="label">zu Panel1</property>
    <property name="name">Panel1</property>
    <property name="permission">none</property>
    <property name="shortcut">F2</property>
    <property name="unchecked_bitmap"></property>
    <event name="OnMenuSelection">OnPanel1</event>
    <event name="OnUpdateUI"></event>
    </object>
    <object class="wxMenuItem" expanded="1">
    <property name="bitmap"></property>
    <property name="checked">0</property>
    <property name="enabled">1</property>
    <property name="help"></property>
    <property name="id">wxID_PANEL2</property>
    <property name="kind">wxITEM_NORMAL</property>
    <property name="label">zu Panel2</property>
    <property name="name">Panel2</property>
    <property name="permission">none</property>
    <property name="shortcut">F3</property>
    <property name="unchecked_bitmap"></property>
    <event name="OnMenuSelection">OnPanel2</event>
    <event name="OnUpdateUI"></event>
    </object>
    </object>
    <object class="wxMenu" expanded="0">
    <property name="label">&Help</property>
    <property name="name">m_helpMenu</property>
    <property name="permission">protected</property>
    <object class="wxMenuItem" expanded="1">
    <property name="bitmap"></property>
    <property name="checked">0</property>
    <property name="enabled">1</property>
    <property name="help">Show info about this application</property>
    <property name="id">ID_HELP_ABOUT</property>
    <property name="kind">wxITEM_NORMAL</property>
    <property name="label">&About</property>
    <property name="name">helpAbout</property>
    <property name="permission">none</property>
    <property name="shortcut">F1</property>
    <property name="unchecked_bitmap"></property>
    <event name="OnMenuSelection"></event>
    <event name="OnUpdateUI"></event>
    </object>
    </object>
    </object>
    </object>
    <object class="Panel" expanded="1">
    <property name="bg"></property>
    <property name="context_help"></property>
    <property name="enabled">1</property>
    <property name="event_handler">impl_virtual</property>
    <property name="fg"></property>
    <property name="font"></property>
    <property name="hidden">0</property>
    <property name="id">ID_PANEL1</property>
    <property name="maximum_size"></property>
    <property name="minimum_size"></property>
    <property name="name">MainPanel</property>
    <property name="pos"></property>
    <property name="size">500,300</property>
    <property name="subclass"></property>
    <property name="tooltip"></property>
    <property name="validator_data_type"></property>
    <property name="validator_style">wxFILTER_NONE</property>
    <property name="validator_type">wxDefaultValidator</property>
    <property name="validator_variable"></property>
    <property name="window_extra_style"></property>
    <property name="window_name"></property>
    <property name="window_style">wxTAB_TRAVERSAL</property>
    <event name="OnChar"></event>
    <event name="OnEnterWindow"></event>
    <event name="OnEraseBackground"></event>
    <event name="OnInitDialog"></event>
    <event name="OnKeyDown"></event>
    <event name="OnKeyUp"></event>
    <event name="OnKillFocus"></event>
    <event name="OnLeaveWindow"></event>
    <event name="OnLeftDClick"></event>
    <event name="OnLeftDown"></event>
    <event name="OnLeftUp"></event>
    <event name="OnMiddleDClick"></event>
    <event name="OnMiddleDown"></event>
    <event name="OnMiddleUp"></event>
    <event name="OnMotion"></event>
    <event name="OnMouseEvents"></event>
    <event name="OnMouseWheel"></event>
    <event name="OnPaint"></event>
    <event name="OnRightDClick"></event>
    <event name="OnRightDown"></event>
    <event name="OnRightUp"></event>
    <event name="OnSetFocus"></event>
    <event name="OnSize"></event>
    <event name="OnUpdateUI"></event>
    <object class="wxBoxSizer" expanded="1">
    <property name="minimum_size"></property>
    <property name="name">mainSizer</property>
    <property name="orient">wxVERTICAL</property>
    <property name="permission">none</property>
    <object class="sizeritem" expanded="1">
    <property name="border">5</property>
    <property name="flag">wxALL|wxALIGN_CENTER_HORIZONTAL</property>
    <property name="proportion">0</property>
    <object class="wxStaticText" expanded="1">
    <property name="bg"></property>
    <property name="context_help"></property>
    <property name="enabled">1</property>
    <property name="fg"></property>
    <property name="font">,90,90,90,70,0</property>
    <property name="hidden">0</property>
    <property name="id">wxID_ANY</property>
    <property name="label">Panel1</property>
    <property name="maximum_size"></property>
    <property name="minimum_size"></property>
    <property name="name">m_staticText5</property>
    <property name="permission">protected</property>
    <property name="pos"></property>
    <property name="size"></property>
    <property name="style"></property>
    <property name="subclass"></property>
    <property name="tooltip"></property>
    <property name="validator_data_type"></property>
    <property name="validator_style">wxFILTER_NONE</property>
    <property name="validator_type">wxDefaultValidator</property>
    <property name="validator_variable"></property>
    <property name="window_extra_style"></property>
    <property name="window_name"></property>
    <property name="window_style"></property>
    <property name="wrap">-1</property>
    <event name="OnChar"></event>
    <event name="OnEnterWindow"></event>
    <event name="OnEraseBackground"></event>
    <event name="OnKeyDown"></event>
    <event name="OnKeyUp"></event>
    <event name="OnKillFocus"></event>
    <event name="OnLeaveWindow"></event>
    <event name="OnLeftDClick"></event>
    <event name="OnLeftDown"></event>
    <event name="OnLeftUp"></event>
    <event name="OnMiddleDClick"></event>
    <event name="OnMiddleDown"></event>
    <event name="OnMiddleUp"></event>
    <event name="OnMotion"></event>
    <event name="OnMouseEvents"></event>
    <event name="OnMouseWheel"></event>
    <event name="OnPaint"></event>
    <event name="OnRightDClick"></event>
    <event name="OnRightDown"></event>
    <event name="OnRightUp"></event>
    <event name="OnSetFocus"></event>
    <event name="OnSize"></event>
    <event name="OnUpdateUI"></event>
    </object>
    </object>
    <object class="sizeritem" expanded="1">
    <property name="border">0</property>
    <property name="flag"></property>
    <property name="proportion">1</property>
    <object class="spacer" expanded="1">
    <property name="height">0</property>
    <property name="permission">protected</property>
    <property name="width">0</property>
    </object>
    </object>
    <object class="sizeritem" expanded="1">
    <property name="border">5</property>
    <property name="flag">wxALL|wxALIGN_RIGHT|wxALIGN_BOTTOM</property>
    <property name="proportion">0</property>
    <object class="wxButton" expanded="1">
    <property name="bg"></property>
    <property name="context_help"></property>
    <property name="default">0</property>
    <property name="enabled">1</property>
    <property name="fg"></property>
    <property name="font"></property>
    <property name="hidden">0</property>
    <property name="id">ID_MAIN_OK</property>
    <property name="label">OK</property>
    <property name="maximum_size"></property>
    <property name="minimum_size"></property>
    <property name="name">m_OK</property>
    <property name="permission">protected</property>
    <property name="pos"></property>
    <property name="size"></property>
    <property name="style"></property>
    <property name="subclass"></property>
    <property name="tooltip"></property>
    <property name="validator_data_type"></property>
    <property name="validator_style">wxFILTER_NONE</property>
    <property name="validator_type">wxDefaultValidator</property>
    <property name="validator_variable"></property>
    <property name="window_extra_style"></property>
    <property name="window_name"></property>
    <property name="window_style"></property>
    <event name="OnButtonClick">OnOK</event>
    <event name="OnChar"></event>
    <event name="OnEnterWindow"></event>
    <event name="OnEraseBackground"></event>
    <event name="OnKeyDown"></event>
    <event name="OnKeyUp"></event>
    <event name="OnKillFocus"></event>
    <event name="OnLeaveWindow"></event>
    <event name="OnLeftDClick"></event>
    <event name="OnLeftDown"></event>
    <event name="OnLeftUp"></event>
    <event name="OnMiddleDClick"></event>
    <event name="OnMiddleDown"></event>
    <event name="OnMiddleUp"></event>
    <event name="OnMotion"></event>
    <event name="OnMouseEvents"></event>
    <event name="OnMouseWheel"></event>
    <event name="OnPaint"></event>
    <event name="OnRightDClick"></event>
    <event name="OnRightDown"></event>
    <event name="OnRightUp"></event>
    <event name="OnSetFocus"></event>
    <event name="OnSize"></event>
    <event name="OnUpdateUI"></event>
    </object>
    </object>
    </object>
    </object>
    <object class="Panel" expanded="1">
    <property name="bg"></property>
    <property name="context_help"></property>
    <property name="enabled">1</property>
    <property name="event_handler">impl_virtual</property>
    <property name="fg"></property>
    <property name="font"></property>
    <property name="hidden">0</property>
    <property name="id">wxID_ANY</property>
    <property name="maximum_size"></property>
    <property name="minimum_size"></property>
    <property name="name">MainPanel2</property>
    <property name="pos"></property>
    <property name="size">500,300</property>
    <property name="subclass"></property>
    <property name="tooltip"></property>
    <property name="validator_data_type"></property>
    <property name="validator_style">wxFILTER_NONE</property>
    <property name="validator_type">wxDefaultValidator</property>
    <property name="validator_variable"></property>
    <property name="window_extra_style"></property>
    <property name="window_name"></property>
    <property name="window_style">wxTAB_TRAVERSAL</property>
    <event name="OnChar"></event>
    <event name="OnEnterWindow"></event>
    <event name="OnEraseBackground"></event>
    <event name="OnInitDialog"></event>
    <event name="OnKeyDown"></event>
    <event name="OnKeyUp"></event>
    <event name="OnKillFocus"></event>
    <event name="OnLeaveWindow"></event>
    <event name="OnLeftDClick"></event>
    <event name="OnLeftDown"></event>
    <event name="OnLeftUp"></event>
    <event name="OnMiddleDClick"></event>
    <event name="OnMiddleDown"></event>
    <event name="OnMiddleUp"></event>
    <event name="OnMotion"></event>
    <event name="OnMouseEvents"></event>
    <event name="OnMouseWheel"></event>
    <event name="OnPaint"></event>
    <event name="OnRightDClick"></event>
    <event name="OnRightDown"></event>
    <event name="OnRightUp"></event>
    <event name="OnSetFocus"></event>
    <event name="OnSize"></event>
    <event name="OnUpdateUI"></event>
    <object class="wxBoxSizer" expanded="1">
    <property name="minimum_size"></property>
    <property name="name">bSizer5</property>
    <property name="orient">wxVERTICAL</property>
    <property name="permission">none</property>
    <object class="sizeritem" expanded="1">
    <property name="border">5</property>
    <property name="flag">wxALL|wxALIGN_CENTER_HORIZONTAL</property>
    <property name="proportion">0</property>
    <object class="wxStaticText" expanded="1">
    <property name="bg"></property>
    <property name="context_help"></property>
    <property name="enabled">1</property>
    <property name="fg"></property>
    <property name="font">,90,90,90,70,0</property>
    <property name="hidden">0</property>
    <property name="id">wxID_ANY</property>
    <property name="label">Panel2</property>
    <property name="maximum_size"></property>
    <property name="minimum_size"></property>
    <property name="name">m_staticText4</property>
    <property name="permission">protected</property>
    <property name="pos"></property>
    <property name="size"></property>
    <property name="style"></property>
    <property name="subclass"></property>
    <property name="tooltip"></property>
    <property name="validator_data_type"></property>
    <property name="validator_style">wxFILTER_NONE</property>
    <property name="validator_type">wxDefaultValidator</property>
    <property name="validator_variable"></property>
    <property name="window_extra_style"></property>
    <property name="window_name"></property>
    <property name="window_style"></property>
    <property name="wrap">-1</property>
    <event name="OnChar"></event>
    <event name="OnEnterWindow"></event>
    <event name="OnEraseBackground"></event>
    <event name="OnKeyDown"></event>
    <event name="OnKeyUp"></event>
    <event name="OnKillFocus"></event>
    <event name="OnLeaveWindow"></event>
    <event name="OnLeftDClick"></event>
    <event name="OnLeftDown"></event>
    <event name="OnLeftUp"></event>
    <event name="OnMiddleDClick"></event>
    <event name="OnMiddleDown"></event>
    <event name="OnMiddleUp"></event>
    <event name="OnMotion"></event>
    <event name="OnMouseEvents"></event>
    <event name="OnMouseWheel"></event>
    <event name="OnPaint"></event>
    <event name="OnRightDClick"></event>
    <event name="OnRightDown"></event>
    <event name="OnRightUp"></event>
    <event name="OnSetFocus"></event>
    <event name="OnSize"></event>
    <event name="OnUpdateUI"></event>
    </object>
    </object>
    <object class="sizeritem" expanded="1">
    <property name="border">5</property>
    <property name="flag">wxEXPAND</property>
    <property name="proportion">1</property>
    <object class="spacer" expanded="1">
    <property name="height">0</property>
    <property name="permission">protected</property>
    <property name="width">0</property>
    </object>
    </object>
    <object class="sizeritem" expanded="1">
    <property name="border">5</property>
    <property name="flag">wxALL</property>
    <property name="proportion">0</property>
    <object class="wxButton" expanded="1">
    <property name="bg"></property>
    <property name="context_help"></property>
    <property name="default">0</property>
    <property name="enabled">1</property>
    <property name="fg"></property>
    <property name="font"></property>
    <property name="hidden">0</property>
    <property name="id">ID_MAIN_OK2</property>
    <property name="label">OK</property>
    <property name="maximum_size"></property>
    <property name="minimum_size"></property>
    <property name="name">m_OK2</property>
    <property name="permission">protected</property>
    <property name="pos"></property>
    <property name="size"></property>
    <property name="style"></property>
    <property name="subclass"></property>
    <property name="tooltip"></property>
    <property name="validator_data_type"></property>
    <property name="validator_style">wxFILTER_NONE</property>
    <property name="validator_type">wxDefaultValidator</property>
    <property name="validator_variable"></property>
    <property name="window_extra_style"></property>
    <property name="window_name"></property>
    <property name="window_style"></property>
    <event name="OnButtonClick">OnOK2</event>
    <event name="OnChar"></event>
    <event name="OnEnterWindow"></event>
    <event name="OnEraseBackground"></event>
    <event name="OnKeyDown"></event>
    <event name="OnKeyUp"></event>
    <event name="OnKillFocus"></event>
    <event name="OnLeaveWindow"></event>
    <event name="OnLeftDClick"></event>
    <event name="OnLeftDown"></event>
    <event name="OnLeftUp"></event>
    <event name="OnMiddleDClick"></event>
    <event name="OnMiddleDown"></event>
    <event name="OnMiddleUp"></event>
    <event name="OnMotion"></event>
    <event name="OnMouseEvents"></event>
    <event name="OnMouseWheel"></event>
    <event name="OnPaint"></event>
    <event name="OnRightDClick"></event>
    <event name="OnRightDown"></event>
    <event name="OnRightUp"></event>
    <event name="OnSetFocus"></event>
    <event name="OnSize"></event>
    <event name="OnUpdateUI"></event>
    </object>
    </object>
    </object>
    </object>
    <object class="Dialog" expanded="1">
    <property name="bg"></property>
    <property name="center"></property>
    <property name="context_help"></property>
    <property name="enabled">1</property>
    <property name="event_handler">impl_virtual</property>
    <property name="extra_style"></property>
    <property name="fg"></property>
    <property name="font"></property>
    <property name="hidden">0</property>
    <property name="id">ID_DEFAULT</property>
    <property name="maximum_size"></property>
    <property name="minimum_size"></property>
    <property name="name">AboutDlg</property>
    <property name="pos"></property>
    <property name="size"></property>
    <property name="style">wxDEFAULT_DIALOG_STYLE</property>
    <property name="subclass"></property>
    <property name="title">About FiF_01...</property>
    <



  • Hallo

    Ich glaube das ich die richtige Lösung gefunden habe.

    in den beiden Panel Klassen

    #include "FiF_01Frame.h"
    

    einfügen.

    Dann folgenden Code in FiF_01Panel1 eintragen

    void FiF_01Panel::OnOK( wxCommandEvent& event )
    {
    	FiF_01Frame * frame;
            frame = (FiF_01Frame *) wxGetTopLevelParent (this);
            frame->Fenster_Umschalter(1,true);
    }
    

    ruft Panel2 auf

    und in FiF_01Panel2 folgenden eintragen.

    void FiF_01Panel2::OnOK2( wxCommandEvent& event)
    {
    	FiF_01Frame * frame;
            frame = (FiF_01Frame *) wxGetTopLevelParent (this);
            frame->Fenster_Umschalter(0,true);
    }
    

    ruft Panel1 auf.
    So wie ich es von MFC gewohnt bin.
    Oder ist das der falsche Weg?

    Gruß Califax



  • Ich denke der üblichere Weg wäre, eine Nachricht zu senden/Ereignis auszulösen, die der Frame abfängt. Das müsste nichtmal ein wxWidgets-Event sein, das könnte auch ein std::tr1::function Callback o.ä. sein (s.a. Boost-Function Doku).

    Aber wenn schon auf diesem Wege, dann bitte wenigstens mit dem richtigen Cast 🙂

    // falls es irgendwelche Zweifel daran geben könnte, von welchem Typ der Toplevel-Parent ist:
    FiF_01Frame * frame = dynamic_cast<FiF_01Frame *>( wxGetTopLevelParent (this) );
    if ( frame == 0 ) { return something_special(); } 
    
    // wenn nicht:
    FiF_01Frame * frame = static_cast<FiF_01Frame *>( wxGetTopLevelParent (this) );
    


  • Hallo LordJaxom

    Danke für Deinen Hinweis.

    Gruß Califax



  • Hallo

    Hab noch etwas an dem Code gefunden was Stört.

    Beim Umschalten der Panels sieht man wie nur das "Client area" neu gezeichnet wird(Flackert).
    Der Rest des Fensters Flackert nicht.
    Hat einer von Euch ein Tip, wie das "Client area" ohne das lästige Flackern neu gezeichnet werden kann?

    void FiF_01Frame::Fenster_Umschalter(int size_id,bool b_schalten)
    {
    
    	switch (size_id)
    	{
    	case 0:
    		panel = new FiF_01Panel( this );
    		break;
    	case 1:
    		panel = new FiF_01Panel2(this);
    		break;
    
    	}
    
    	// Nach der Erzeugung wird das Panels dem Sizer übergeben.
    	sizer->Add( panel, 1, wxEXPAND );
    	wxSize panelSize = panel->GetSize();
    	this->SetSizerAndFit( sizer );
    	this->SetClientSize( panelSize );	
    
    }
    

    Gruß Califax



  • Hallo

    Hab die Funktion "Fenster_Umschalter" ein wenig überarbeitet und zwar mit einem kleinen Erfolg.
    Bei dem kleinem Demo "FiF_01" sehe ich das Löschen und das neu Zeichnen des Fensters nicht mehr nur bei ganz schnellem umschalten
    sieht man (ganz selten noch) in der linken oberen Ecke des "Client area" ein helles Quadrat.
    Bei einem Panel mit vielen Controlls sieht man das helle Quadrat ständig.

    FiF_01Frame.h

    wxBoxSizer* p_sizer;
    	wxPanel* p_altes_panel;
    	wxPanel* p_neues_panel;
    

    Konstruktor

    FiF_01Frame::FiF_01Frame( wxWindow *parent, int id )
    	: MainFrame( parent,id )
    	,p_altes_panel(NULL)// Zeiger wird NULL Initialisiert
    	,p_neues_panel(NULL)// Zeiger wird NULL Initialisiert
    {
    	// Der Sizer wird als erstes erstellt,er nimmt später die Kindfenster von MyFrame auf.
    	   p_sizer = new wxBoxSizer( wxVERTICAL ); 
    	Fenster_Umschalter();
    }
    

    Hier die neue Funktion (der Parameter "b_schalten" ist sinnlos geworden)

    void FiF_01Frame::Fenster_Umschalter(int size_id,bool b_schalten)
    {
    	wxPanel * p_temp_panel = NULL;
    	// Hier wird die aktuellen Fenstergröße geholt
    	   wxRect rect = GetClientRect();
    	// Hier wird nun der eigentliche Fensterinhalt erstellt 
    
    	switch (size_id)
    	{
    	case 0:
    		p_neues_panel = new FiF_01Panel( this );
    		break;
    	case 1:
    		p_neues_panel = new FiF_01Panel2(this);
    		break;
    	case 2:
    		p_neues_panel = new FiF_01Panel3(this);
    		break;
    	}
    
    	// Hier wird der Sizer auf aktuelle Fenstergröße gesetzt
    	p_neues_panel->SetSize(rect);
    	// Nach der Erzeugung wird das Panels dem Sizer übergeben.
    	p_sizer->Add( p_neues_panel, 1, wxEXPAND );
    
    	if ( p_altes_panel == NULL)
    	{
    		//wxMessageBox(_T("p_altes_panel ist NULL"));
    		p_altes_panel = p_neues_panel;
    
    	}
    	else
    	{
    		p_altes_panel->Destroy();
    		p_altes_panel = p_neues_panel;
    	}
    
    // Mögliche Varianten
    	//FiF_01Frame::SetSizer(p_sizer);
    	               SetSizer(p_sizer);
    
    	  FiF_01Frame::SetClientSize(rect);
    
    }
    

    Hat einer noch eine Idee um es noch sauberer hinzubekommen?

    Gruß Califax



  • Hallo

    Hat den Keiner eine Idee?

    Was mache ich falsch?

    Gruß Califax



  • Hallo

    Habe mein Anliegen mal englischen Forum gestellt und hab eine Anregung erhalten.
    Da kann man auch meine Lösung runterladen.

    http://wxforum.shadonet.com/viewtopic.php?t=24272

    Gruß Califax


Anmelden zum Antworten