[wxMSW][wx v3.1.2] wxScrolledWindow wont cause the child controls to be repainted

Do you have a typical platform dependent issue you're battling with ? Ask it here. Make sure you mention your platform, compiler, and wxWidgets version.
Post Reply
tomay3000
Earned some good credits
Earned some good credits
Posts: 116
Joined: Mon Apr 24, 2017 4:23 am

[wxMSW][wx v3.1.2] wxScrolledWindow wont cause the child controls to be repainted

Post by tomay3000 » Tue Jan 01, 2019 7:36 pm

Hello,
the wxScrolledWindow derived classes are not causing a sizer contained child controls to be redrawn especially if the implement owner drawn OnPaint handlers.
I had to use wxFULL_REPAINT_ON_RESIZE style flag to get it working, but this causes a flickering problems.

This is a screenshot illustrating the problem.
Untitled 7.png
Untitled 7.png (31.8 KiB) Viewed 363 times
OS: Windows 7

What could be the cause?
Thank you for your understanding
Last edited by tomay3000 on Wed Jan 02, 2019 12:29 am, edited 1 time in total.

PB
Part Of The Furniture
Part Of The Furniture
Posts: 1915
Joined: Sun Jan 03, 2010 5:45 pm

Re: [wxMSW] wxScrolledWindow wont cause the child controls to be repainted

Post by PB » Tue Jan 01, 2019 8:47 pm

I assume that the issue manifest when resizing and not when just scrolling?

Are you sure that the issue is withing wxScrolledWindow, I did a simple test (wxWidgets 3.1.2 on Windows 10) and did not see any corruption:

Code: Select all

#include <wx/wx.h>
#include <wx/artprov.h>
#include <wx/dcbuffer.h>
#include <wx/scrolwin.h>

class MyCanvas : public wxPanel
{
public:
    MyCanvas(wxWindow* parent, const wxString& label)
        : wxPanel(parent), m_label(label)
    {                
        SetBackgroundStyle(wxBG_STYLE_PAINT);
        Bind(wxEVT_PAINT, &MyCanvas::OnPaint, this);                
        
        m_bitmap = wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON);
    }
protected:
    wxSize DoGetBestClientSize() const
    {
        wxSize size = GetTextExtent(m_label);
        
        if ( m_bitmap.IsOk() )
            size += m_bitmap.GetSize();
        
        return size;
    }
private:
    wxString m_label;
    wxBitmap m_bitmap;

    void OnPaint(wxPaintEvent&)
    {
        wxAutoBufferedPaintDC dc(this);                        
        wxDCTextColourChanger tc(dc, *wxRED);
        
        dc.Clear();

        wxPoint pos = wxPoint(0, 0);
        if ( m_bitmap.IsOk() )
        {            
            dc.DrawBitmap(m_bitmap, pos, true);             
            pos.x += m_bitmap.GetWidth();
        }
        dc.DrawText(m_label, pos);
    }
};    
 

class MyFrame : public wxFrame
{
public:   
    MyFrame() : wxFrame(NULL, wxID_ANY, "Test", wxDefaultPosition, wxSize(300, 500))
    { 
        wxBoxSizer* mainSizer = new wxBoxSizer(wxVERTICAL);

        mainSizer->Add(new wxStaticText(this, wxID_ANY, "This control will not be scrolled"), 0, wxALL, 10);

        wxScrolledWindow* scrolled = new wxScrolledWindow(this);
        wxGridSizer* scrolledSizer = new wxFlexGridSizer(6, wxSize(5, 5));

        for ( size_t i = 0; i < 25; ++i )
        {
            scrolledSizer->Add(new wxStaticText(scrolled, wxID_ANY, wxString::Format("wxStaticText %zu", i)));
            scrolledSizer->Add(new MyCanvas(scrolled, wxString::Format("MyCanvas %zu", i)));
            scrolledSizer->Add(new wxTextCtrl(scrolled, wxID_ANY, wxString::Format("wxTextCtrl %zu", i)));
            scrolledSizer->Add(new wxButton(scrolled, wxID_ANY, wxString::Format("wxButton %zu", i)));
            scrolledSizer->Add(new wxCheckBox(scrolled, wxID_ANY, wxString::Format("wxCheckBox %zu", i)));
            scrolledSizer->Add(new wxRadioButton(scrolled, wxID_ANY, wxString::Format("wxRadioButton %zu", i)));            
        }           
        
        scrolled->SetSizer(scrolledSizer);        
        scrolled->FitInside();
        scrolled->SetScrollRate(25, 25);                
        mainSizer->Add(scrolled, 1, wxEXPAND);

        mainSizer->Add(new wxStaticText(this, wxID_ANY, "This control will not be scrolled either"), 0, wxALL, 10);

        SetSizer(mainSizer);        
    }
};

class MyApp : public wxApp
{
public:          
    bool OnInit()
    {
        (new MyFrame)->Show();        
        return true;
    }   
}; wxIMPLEMENT_APP(MyApp);
Granted, the sizer hierarchy in the code above is not very complex...

tomay3000
Earned some good credits
Earned some good credits
Posts: 116
Joined: Mon Apr 24, 2017 4:23 am

Re: [wxMSW] wxScrolledWindow wont cause the child controls to be repainted

Post by tomay3000 » Wed Jan 02, 2019 12:40 am

PB wrote:I assume that the issue manifest when resizing and not when just scrolling?
YES, the issue manifests when resizing, and EXACTLY when one of the scrollbars shows up when the minimum width/height is reached.
PB wrote:Are you sure that the issue is withing wxScrolledWindow, I did a simple test (wxWidgets 3.1.2 on Windows 10) and did not see any corruption:
I tried your simple code and did not see the issue manifested neither, may be the code you provided is not enough, try to add some buttons with images and a resizable wxDataViewCtrl as in my case. If you want I will send you my project to see for your self.

Thank you for your understanding.

PB
Part Of The Furniture
Part Of The Furniture
Posts: 1915
Joined: Sun Jan 03, 2010 5:45 pm

Re: [wxMSW] wxScrolledWindow wont cause the child controls to be repainted

Post by PB » Wed Jan 02, 2019 6:34 am

tomay3000 wrote:I tried your simple code and did not see the issue manifested neither, may be the code you provided is not enough, try to add some buttons with images and a resizable wxDataViewCtrl as in my case.
The code above has a bunch of different controls, including a custom drawn one. Therefore, the statement "the wxScrolledWindow derived classes are not causing a sizer contained child controls to be redrawn" is not entirely correct and there is something else at play.

In your shoes, I would try narrowing the issue down to see what is actually wrong, i.e., adding/removing the controls till you pinpoint where the problem is.

tomay3000
Earned some good credits
Earned some good credits
Posts: 116
Joined: Mon Apr 24, 2017 4:23 am

Re: [wxMSW][wx v3.1.2] wxScrolledWindow wont cause the child controls to be repainted

Post by tomay3000 » Wed Jan 02, 2019 11:34 am

Compile this code and see for yourself: resize on the "Client" tab

Code: Select all

#include <wx/wx.h>
#include <wx/artprov.h>
#include <wx/xrc/xmlres.h>
#include "wx/generic/statbmpg.h"
#include <wx/string.h>
#include <wx/bitmap.h>
#include <wx/image.h>
#include <wx/icon.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/ribbon/buttonbar.h>
#include <wx/ribbon/panel.h>
#include <wx/ribbon/page.h>
#include <wx/ribbon/control.h>
#include <wx/ribbon/art.h>
#include <wx/ribbon/bar.h>
#include <wx/sizer.h>
#include <wx/scrolwin.h>
#include <wx/dataview.h>
#include <wx/statline.h>
#include <wx/button.h>
#include <wx/stattext.h>
#include <wx/textctrl.h>
#include <wx/srchctrl.h>
#include <wx/bmpbuttn.h>
#include <wx/valtext.h>
#include <wx/statbox.h>
#include <wx/checkbox.h>
#include <wx/statbmp.h>
#include <wx/simplebook.h>
#include <wx/menu.h>
#include <wx/statusbr.h>
#include <wx/frame.h>

///////////////////////////////////////////////////////////////////////////

#define wxID_FACEBOOK 1000
#define wxID_YOUTUBE 1001
#define wxID_EDT_OP_MO_CMD_SLD 1002
#define wxID_EDT_OP_MO_CMD_TRANS 1003
#define wxID_EDT_OP_MO_CMD_FACT 1004
#define wxID_EDT_OP_MO_CMD_INTL 1005
#define wxID_EDT_OP_MO_CMD_MO_PIXX 1006
#define wxID_EDT_OP_MO_CODE_PIN 1007
#define wxID_EDT_OP_MO_REP_OUI 1008
#define wxID_EDT_OP_MO_REP_NON 1009
#define wxID_EDT_OP_MO_FLTR_EXP_SLD_ENTR 1010
#define wxID_EDT_OP_MO_FLTR_EXP_SLD_ET 1011
#define wxID_CHK_OP_MO_CONF_AUTO 1012
#define wxID_EDT_OP_DJ_CMD_SLD 1013
#define wxID_EDT_OP_DJ_CMD_TRANS 1014
#define wxID_EDT_OP_DJ_CMD_FACT 1015
#define wxID_EDT_OP_DJ_CMD_ML_HAYLA 1016
#define wxID_EDT_OP_DJ_CODE_PIN 1017
#define wxID_EDT_OP_DJ_REP_OUI 1018
#define wxID_EDT_OP_DJ_REP_NON 1019
#define wxID_EDT_OP_DJ_FLTR_EXP_SLD_ENTR 1020
#define wxID_EDT_OP_DJ_FLTR_EXP_SLD_ET 1021
#define wxID_CHK_OP_DJ_CONF_AUTO 1022
#define wxID_EDT_OP_OO_CMD_SLD 1023
#define wxID_EDT_OP_OO_CMD_TRANS 1024
#define wxID_EDT_OP_OO_CMD_MAXY 1025
#define wxID_EDT_OP_OO_CODE_PIN 1026
#define wxID_EDT_OP_OO_REP_OUI 1027
#define wxID_EDT_OP_OO_REP_NON 1028
#define wxID_EDT_OP_OO_FLTR_EXP_SLD_ENTR 1029
#define wxID_EDT_OP_OO_FLTR_EXP_SLD_ET 1030
#define wxID_CHK_OP_OO_CONF_AUTO 1031
#define wxID_SAVE_BTN 1032
#define idMenuQuit 1033
#define idMenuAbout 1034
#define wxID_STATUSBAR 1035

///////////////////////////////////////////////////////////////////////////////
/// Class MainFrame
///////////////////////////////////////////////////////////////////////////////
class MainFrame : public wxFrame
{
	private:

	protected:
		wxRibbonBar* m_ribbonBar1;
		wxRibbonPage* m_ribbonPage1;
		wxRibbonPanel* m_ribbonPanel1;
		wxRibbonButtonBar* m_ribbonButtonBar1;
		wxRibbonPage* m_ribbonPage2;
		wxRibbonPanel* m_ribbonPanel2;
		wxRibbonButtonBar* m_ribbonButtonBar2;
		wxRibbonPage* m_ribbonPage3;
		wxRibbonPanel* m_ribbonPanel3;
		wxRibbonButtonBar* m_ribbonButtonBar3;
		wxRibbonPage* m_ribbonPage4;
		wxRibbonPanel* m_ribbonPanel4;
		wxRibbonButtonBar* m_ribbonButtonBar4;
		wxRibbonPage* m_ribbonPage5;
		wxRibbonPanel* m_ribbonPanel5;
		wxRibbonButtonBar* m_ribbonButtonBar5;
		wxSimplebook* m_simplebook1;
		wxScrolledWindow* m_scrolledWindow1;
		wxScrolledWindow* m_scrolledWindow2;
		wxDataViewListCtrl* m_dataViewListCtrl1;
		wxStaticLine* m_staticline1;
		wxButton* m_button1;
		wxButton* m_button2;
		wxButton* m_button3;
		wxButton* m_button4;
		wxStaticLine* m_staticline2;
		wxButton* m_button5;
		wxButton* m_button6;
		wxStaticLine* m_staticline3;
		wxButton* m_button7;
		wxScrolledWindow* m_scrolledWindow3;
		wxStaticText* m_staticText31;
		wxTextCtrl* m_Edt_Recherche;
		wxSearchCtrl* m_searchCtrl1;
		wxBitmapButton* m_Btn_Recherche;
		wxBitmapButton* m_Btn_Annuler;
		wxStaticLine* m_staticline7;
		wxDataViewListCtrl* m_dataViewListCtrl2;
		wxStaticLine* m_staticline8;
		wxButton* m_button11;
		wxButton* m_button9;
		wxButton* m_button10;
		wxScrolledWindow* m_scrolledWindow4;
		wxStaticText* m_staticText1;
		wxTextCtrl* m_Edt_Op_Mo_Cmd_Sld;
		wxStaticText* m_staticText2;
		wxTextCtrl* m_Edt_Op_Mo_Cmd_Trans;
		wxStaticText* m_staticText3;
		wxTextCtrl* m_Edt_Op_Mo_Cmd_Fact;
		wxStaticText* m_staticText4;
		wxTextCtrl* m_Edt_Op_Mo_Cmd_Intl;
		wxStaticText* m_staticText5;
		wxTextCtrl* m_Edt_Op_Mo_Cmd_Mo_Pixx;
		wxStaticText* m_staticText6;
		wxTextCtrl* m_Edt_Op_Mo_Code_PIN;
		wxStaticText* m_staticText7;
		wxTextCtrl* m_Edt_Op_Mo_Rep_Oui;
		wxStaticText* m_staticText8;
		wxTextCtrl* m_Edt_Op_Mo_Rep_Non;
		wxStaticText* m_staticText9;
		wxTextCtrl* m_Edt_Op_Mo_Fltr_Exp_Sld_Entr;
		wxStaticText* m_staticText10;
		wxTextCtrl* m_Edt_Op_Mo_Fltr_Exp_Sld_Et;
		wxCheckBox* m_Chk_Op_Mo_Conf_Auto;
		wxStaticLine* m_staticline6;
		wxGenericStaticBitmap* m_bitmap1;
		wxStaticText* m_staticText11;
		wxTextCtrl* m_Edt_Op_Dj_Cmd_Sld;
		wxStaticText* m_staticText12;
		wxTextCtrl* m_Edt_Op_Dj_Cmd_Trans;
		wxStaticText* m_staticText13;
		wxTextCtrl* m_Edt_Op_Dj_Cmd_Fact;
		wxStaticText* m_staticText70;
		wxTextCtrl* m_textCtrl70;
		wxStaticText* m_staticText14;
		wxTextCtrl* m_Edt_Op_Dj_Cmd_Ml_Hayla;
		wxStaticText* m_staticText15;
		wxTextCtrl* m_Edt_Op_Dj_Code_PIN;
		wxStaticText* m_staticText16;
		wxTextCtrl* m_Edt_Op_Dj_Rep_Oui;
		wxStaticText* m_staticText17;
		wxTextCtrl* m_Edt_Op_Dj_Rep_Non;
		wxStaticText* m_staticText18;
		wxTextCtrl* m_Edt_Op_Dj_Fltr_Exp_Sld_Entr;
		wxStaticText* m_staticText19;
		wxTextCtrl* m_Edt_Op_Dj_Fltr_Exp_Sld_Et;
		wxCheckBox* m_Chk_Op_Dj_Conf_Auto;
		wxStaticLine* m_staticline5;
		wxGenericStaticBitmap* m_bitmap2;
		wxStaticText* m_staticText20;
		wxTextCtrl* m_Edt_Op_Oo_Cmd_Sld;
		wxStaticText* m_staticText21;
		wxTextCtrl* m_Edt_Op_Oo_Cmd_Trans;
		wxStaticText* m_staticText701;
		wxTextCtrl* m_textCtrl701;
		wxStaticText* m_staticText7011;
		wxTextCtrl* m_textCtrl7011;
		wxStaticText* m_staticText22;
		wxTextCtrl* m_Edt_Op_Oo_Cmd_Maxy;
		wxStaticText* m_staticText23;
		wxTextCtrl* m_Edt_Op_Oo_Code_PIN;
		wxStaticText* m_staticText24;
		wxTextCtrl* m_Edt_Op_Oo_Rep_Oui;
		wxStaticText* m_staticText25;
		wxTextCtrl* m_Edt_Op_Oo_Rep_Non;
		wxStaticText* m_staticText26;
		wxTextCtrl* m_Edt_Op_Oo_Fltr_Exp_Sld_Entr;
		wxStaticText* m_staticText27;
		wxTextCtrl* m_Edt_Op_Oo_Fltr_Exp_Sld_Et;
		wxCheckBox* m_Chk_Op_Oo_Conf_Auto;
		wxStaticLine* m_staticline4;
		wxGenericStaticBitmap* m_bitmap3;
		wxButton* m_Btn_Enregistrer;
		wxScrolledWindow* m_scrolledWindow5;
		wxMenuBar* menuBar;
		wxMenu* fileMenu;
		wxMenu* helpMenu;
		wxStatusBar* statusBar;

		// Virtual event handlers, overide them in your derived class
		virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
		virtual void OnRibbonBarPageChanged( wxRibbonBarEvent& event );// { event.Skip(); }
		virtual void OnClose( wxRibbonButtonBarEvent& event ) { event.Skip(); }
		virtual void OnAbout( wxRibbonButtonBarEvent& event ) { event.Skip(); }
		virtual void OnFacebook( wxRibbonButtonBarEvent& event ) { event.Skip(); }
		virtual void OnYoutube( wxRibbonButtonBarEvent& event ) { event.Skip(); }
		virtual void m_Btn_Recherche_OnButtonClick( wxCommandEvent& event ) { event.Skip(); }
		virtual void m_Btn_Annuler_OnButtonClick( wxCommandEvent& event ) { event.Skip(); }
		virtual void m_Btn_Enregistrer_OnButtonClick( wxCommandEvent& event ) { event.Skip(); }
		virtual void OnQuit( wxCommandEvent& event ) { event.Skip(); }
		virtual void OnAbout( wxCommandEvent& event ) { event.Skip(); }


	public:

		MainFrame( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Serveur SMS"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 800,600 ), long style = wxDEFAULT_FRAME_STYLE|wxMAXIMIZE|wxTAB_TRAVERSAL );

		~MainFrame();

};

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( wxSize( -1,-1 ), wxDefaultSize );

	wxBoxSizer* bSizer1;
	bSizer1 = new wxBoxSizer( wxVERTICAL );

	m_ribbonBar1 = new wxRibbonBar( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxRIBBON_BAR_DEFAULT_STYLE|wxRIBBON_BAR_SHOW_PAGE_ICONS|wxRIBBON_BAR_SHOW_PANEL_MINIMISE_BUTTONS );
	m_ribbonBar1->SetArtProvider(new wxRibbonDefaultArtProvider);
	m_ribbonPage1 = new wxRibbonPage( m_ribbonBar1, wxID_ANY, wxT("Accueil") , wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON) , 0 );
	m_ribbonBar1->SetActivePage( m_ribbonPage1 );
	m_ribbonPanel1 = new wxRibbonPanel( m_ribbonPage1, wxID_ANY, wxT("Accueil") , wxNullBitmap , wxDefaultPosition, wxDefaultSize, wxRIBBON_PANEL_DEFAULT_STYLE );
	m_ribbonButtonBar1 = new wxRibbonButtonBar( m_ribbonPanel1, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
	m_ribbonButtonBar1->AddButton( wxID_CLOSE, wxT("Quiter"), wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON), wxEmptyString);
	m_ribbonButtonBar1->AddButton( wxID_ANY, wxT("MyRibbonButton"), wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON), wxEmptyString);
	m_ribbonButtonBar1->AddButton( wxID_ANY, wxT("MyRibbonButton"), wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON), wxEmptyString);
	m_ribbonPage2 = new wxRibbonPage( m_ribbonBar1, wxID_ANY, wxT("Transferts") , wxNullBitmap , 0 );
	m_ribbonPanel2 = new wxRibbonPanel( m_ribbonPage2, wxID_ANY, wxT("Opérations des Transferts") , wxNullBitmap , wxDefaultPosition, wxDefaultSize, wxRIBBON_PANEL_DEFAULT_STYLE );
	m_ribbonButtonBar2 = new wxRibbonButtonBar( m_ribbonPanel2, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
	m_ribbonButtonBar2->AddButton( wxID_ANY, wxT("MyRibbonButton"), wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON), wxEmptyString);
	m_ribbonButtonBar2->AddButton( wxID_ANY, wxT("MyRibbonButton"), wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON), wxEmptyString);
	m_ribbonButtonBar2->AddButton( wxID_ANY, wxT("MyRibbonButton"), wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON), wxEmptyString);
	m_ribbonPage3 = new wxRibbonPage( m_ribbonBar1, wxID_ANY, wxT("Clients") , wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON) , 0 );
	m_ribbonPanel3 = new wxRibbonPanel( m_ribbonPage3, wxID_ANY, wxT("Opération au Clients") , wxNullBitmap , wxDefaultPosition, wxDefaultSize, wxRIBBON_PANEL_DEFAULT_STYLE );
	m_ribbonButtonBar3 = new wxRibbonButtonBar( m_ribbonPanel3, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
	m_ribbonButtonBar3->AddButton( wxID_ANY, wxT("MyRibbonButton"), wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON), wxEmptyString);
	m_ribbonButtonBar3->AddButton( wxID_ANY, wxT("MyRibbonButton"), wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON), wxEmptyString);
	m_ribbonButtonBar3->AddButton( wxID_ANY, wxT("MyRibbonButton"), wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON), wxEmptyString);
	m_ribbonPage4 = new wxRibbonPage( m_ribbonBar1, wxID_ANY, wxT("Paramètres") , wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON) , 0 );
	m_ribbonPanel4 = new wxRibbonPanel( m_ribbonPage4, wxID_ANY, wxT("Paramètrer le Serveur SMS") , wxNullBitmap , wxDefaultPosition, wxDefaultSize, wxRIBBON_PANEL_DEFAULT_STYLE );
	m_ribbonButtonBar4 = new wxRibbonButtonBar( m_ribbonPanel4, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
	m_ribbonButtonBar4->AddButton( wxID_ANY, wxT("Opérateur"), wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON), wxEmptyString);
	m_ribbonButtonBar4->AddButton( wxID_ANY, wxT("MyRibbonButton"), wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON), wxEmptyString);
	m_ribbonButtonBar4->AddButton( wxID_ANY, wxT("MyRibbonButton"), wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON), wxEmptyString);
	m_ribbonPage5 = new wxRibbonPage( m_ribbonBar1, wxID_ANY, wxT("Aide") , wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON) , 0 );
	m_ribbonPanel5 = new wxRibbonPanel( m_ribbonPage5, wxID_ANY, wxT("Aide") , wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON) , wxDefaultPosition, wxDefaultSize, wxRIBBON_PANEL_DEFAULT_STYLE );
	m_ribbonButtonBar5 = new wxRibbonButtonBar( m_ribbonPanel5, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
	m_ribbonButtonBar5->AddButton( wxID_ABOUT, wxT("À propos..."), wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON), wxEmptyString);
	m_ribbonButtonBar5->AddButton( wxID_FACEBOOK, wxT("Facebook"), wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON), wxEmptyString);
	m_ribbonButtonBar5->AddButton( wxID_YOUTUBE, wxT("Youtube"), wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON), wxEmptyString);
	m_ribbonBar1->Realize();

	bSizer1->Add( m_ribbonBar1, 0, wxEXPAND, 5 );

	m_simplebook1 = new wxSimplebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
	m_scrolledWindow1 = new wxScrolledWindow( m_simplebook1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
	m_scrolledWindow1->SetScrollRate( 5, 5 );
	wxBoxSizer* bSizer2;
	bSizer2 = new wxBoxSizer( wxVERTICAL );


	m_scrolledWindow1->SetSizer( bSizer2 );
	m_scrolledWindow1->Layout();
	bSizer2->Fit( m_scrolledWindow1 );
	m_simplebook1->AddPage( m_scrolledWindow1, wxT("a page"), false );
	m_scrolledWindow2 = new wxScrolledWindow( m_simplebook1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
	m_scrolledWindow2->SetScrollRate( 5, 5 );
	wxBoxSizer* bSizer3;
	bSizer3 = new wxBoxSizer( wxHORIZONTAL );

	m_dataViewListCtrl1 = new wxDataViewListCtrl( m_scrolledWindow2, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxDV_HORIZ_RULES|wxDV_ROW_LINES|wxDV_VERT_RULES );
	bSizer3->Add( m_dataViewListCtrl1, 1, wxALL|wxEXPAND, 5 );

	m_staticline1 = new wxStaticLine( m_scrolledWindow2, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
	bSizer3->Add( m_staticline1, 0, wxEXPAND|wxALL, 5 );

	wxBoxSizer* bSizer7;
	bSizer7 = new wxBoxSizer( wxVERTICAL );

	m_button1 = new wxButton( m_scrolledWindow2, wxID_ANY, wxT("MyButton"), wxDefaultPosition, wxDefaultSize, 0 );
	bSizer7->Add( m_button1, 0, wxALL, 5 );

	m_button2 = new wxButton( m_scrolledWindow2, wxID_ANY, wxT("MyButton"), wxDefaultPosition, wxDefaultSize, 0 );
	bSizer7->Add( m_button2, 0, wxALL, 5 );

	m_button3 = new wxButton( m_scrolledWindow2, wxID_ANY, wxT("MyButton"), wxDefaultPosition, wxDefaultSize, 0 );
	bSizer7->Add( m_button3, 0, wxALL, 5 );

	m_button4 = new wxButton( m_scrolledWindow2, wxID_ANY, wxT("MyButton"), wxDefaultPosition, wxDefaultSize, 0 );
	bSizer7->Add( m_button4, 0, wxALL, 5 );

	m_staticline2 = new wxStaticLine( m_scrolledWindow2, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
	bSizer7->Add( m_staticline2, 0, wxEXPAND | wxALL, 5 );

	m_button5 = new wxButton( m_scrolledWindow2, wxID_ANY, wxT("MyButton"), wxDefaultPosition, wxDefaultSize, 0 );
	bSizer7->Add( m_button5, 0, wxALL, 5 );

	m_button6 = new wxButton( m_scrolledWindow2, wxID_ANY, wxT("MyButton"), wxDefaultPosition, wxDefaultSize, 0 );
	bSizer7->Add( m_button6, 0, wxALL, 5 );

	m_staticline3 = new wxStaticLine( m_scrolledWindow2, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
	bSizer7->Add( m_staticline3, 0, wxEXPAND | wxALL, 5 );

	m_button7 = new wxButton( m_scrolledWindow2, wxID_ANY, wxT("MyButton"), wxDefaultPosition, wxDefaultSize, 0 );
	bSizer7->Add( m_button7, 0, wxALL, 5 );


	bSizer3->Add( bSizer7, 0, wxEXPAND, 5 );


	m_scrolledWindow2->SetSizer( bSizer3 );
	m_scrolledWindow2->Layout();
	bSizer3->Fit( m_scrolledWindow2 );
	m_simplebook1->AddPage( m_scrolledWindow2, wxT("a page"), false );
	m_scrolledWindow3 = new wxScrolledWindow( m_simplebook1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
	m_scrolledWindow3->SetScrollRate( 5, 5 );
	wxBoxSizer* bSizer4;
	bSizer4 = new wxBoxSizer( wxVERTICAL );

	wxBoxSizer* bSizer15;
	bSizer15 = new wxBoxSizer( wxHORIZONTAL );

	m_staticText31 = new wxStaticText( m_scrolledWindow3, wxID_ANY, wxT("Recherche:"), wxDefaultPosition, wxDefaultSize, 0 );
	m_staticText31->Wrap( -1 );
	bSizer15->Add( m_staticText31, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );

	m_Edt_Recherche = new wxTextCtrl( m_scrolledWindow3, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
	m_Edt_Recherche->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_INFOBK ) );

	bSizer15->Add( m_Edt_Recherche, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 );

	m_searchCtrl1 = new wxSearchCtrl( m_scrolledWindow3, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
	#ifndef __WXMAC__
	m_searchCtrl1->ShowSearchButton( true );
	#endif
	m_searchCtrl1->ShowCancelButton( true );
	m_searchCtrl1->SetBackgroundColour( wxColour( 0, 255, 0 ) );

	bSizer15->Add( m_searchCtrl1, 1, wxALL|wxEXPAND, 5 );

	m_Btn_Recherche = new wxBitmapButton( m_scrolledWindow3, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );

	m_Btn_Recherche->SetBitmap( wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON) );
	bSizer15->Add( m_Btn_Recherche, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );

	m_Btn_Annuler = new wxBitmapButton( m_scrolledWindow3, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );

	m_Btn_Annuler->SetBitmap( wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON) );
	bSizer15->Add( m_Btn_Annuler, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );


	bSizer4->Add( bSizer15, 1, wxEXPAND, 5 );

	m_staticline7 = new wxStaticLine( m_scrolledWindow3, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
	bSizer4->Add( m_staticline7, 0, wxEXPAND | wxALL, 5 );

	wxBoxSizer* bSizer16;
	bSizer16 = new wxBoxSizer( wxHORIZONTAL );

	m_dataViewListCtrl2 = new wxDataViewListCtrl( m_scrolledWindow3, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxDV_HORIZ_RULES|wxDV_ROW_LINES|wxDV_VERT_RULES );
	m_dataViewListCtrl2->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) );
	m_dataViewListCtrl2->Enable( false );

	bSizer16->Add( m_dataViewListCtrl2, 1, wxALL|wxEXPAND, 5 );

	m_staticline8 = new wxStaticLine( m_scrolledWindow3, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
	bSizer16->Add( m_staticline8, 0, wxEXPAND|wxALL, 5 );

	wxBoxSizer* bSizer17;
	bSizer17 = new wxBoxSizer( wxVERTICAL );

	m_button11 = new wxButton( m_scrolledWindow3, wxID_ANY, wxT("Ajouter"), wxDefaultPosition, wxDefaultSize, 0 );

	m_button11->SetBitmap( wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON) );
	m_button11->SetBitmapPosition( wxRIGHT );
	bSizer17->Add( m_button11, 0, wxALL|wxEXPAND, 5 );

	m_button9 = new wxButton( m_scrolledWindow3, wxID_ANY, wxT("Modifier"), wxDefaultPosition, wxDefaultSize, 0 );

	m_button9->SetBitmap( wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON) );
	m_button9->SetBitmapPosition( wxRIGHT );
	bSizer17->Add( m_button9, 0, wxALL|wxEXPAND, 5 );

	m_button10 = new wxButton( m_scrolledWindow3, wxID_ANY, wxT("Supprimer"), wxDefaultPosition, wxDefaultSize, 0 );

	m_button10->SetBitmap( wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON) );
	m_button10->SetBitmapPosition( wxRIGHT );
	bSizer17->Add( m_button10, 0, wxALL|wxEXPAND, 5 );


	bSizer16->Add( bSizer17, 0, wxEXPAND, 5 );


	bSizer4->Add( bSizer16, 1, wxEXPAND, 5 );


	m_scrolledWindow3->SetSizer( bSizer4 );
	m_scrolledWindow3->Layout();
	bSizer4->Fit( m_scrolledWindow3 );
	m_simplebook1->AddPage( m_scrolledWindow3, wxT("a page"), false );
	m_scrolledWindow4 = new wxScrolledWindow( m_simplebook1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
	m_scrolledWindow4->SetScrollRate( 5, 5 );
	wxBoxSizer* bSizer5;
	bSizer5 = new wxBoxSizer( wxVERTICAL );

	wxBoxSizer* bSizer12;
	bSizer12 = new wxBoxSizer( wxHORIZONTAL );

	wxStaticBoxSizer* sbSizer1;
	sbSizer1 = new wxStaticBoxSizer( new wxStaticBox( m_scrolledWindow4, wxID_ANY, wxT("Mobilis:") ), wxVERTICAL );

	wxGridSizer* gSizer1;
	gSizer1 = new wxGridSizer( 0, 2, 0, 0 );

	m_staticText1 = new wxStaticText( sbSizer1->GetStaticBox(), wxID_ANY, wxT("Commande Solde:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText1->Wrap( -1 );
	gSizer1->Add( m_staticText1, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Mo_Cmd_Sld = new wxTextCtrl( sbSizer1->GetStaticBox(), wxID_EDT_OP_MO_CMD_SLD, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer1->Add( m_Edt_Op_Mo_Cmd_Sld, 0, wxALL, 5 );

	m_staticText2 = new wxStaticText( sbSizer1->GetStaticBox(), wxID_ANY, wxT("Commande Transfert:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText2->Wrap( -1 );
	gSizer1->Add( m_staticText2, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Mo_Cmd_Trans = new wxTextCtrl( sbSizer1->GetStaticBox(), wxID_EDT_OP_MO_CMD_TRANS, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer1->Add( m_Edt_Op_Mo_Cmd_Trans, 0, wxALL, 5 );

	m_staticText3 = new wxStaticText( sbSizer1->GetStaticBox(), wxID_ANY, wxT("Commande Facture:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText3->Wrap( -1 );
	gSizer1->Add( m_staticText3, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Mo_Cmd_Fact = new wxTextCtrl( sbSizer1->GetStaticBox(), wxID_EDT_OP_MO_CMD_FACT, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer1->Add( m_Edt_Op_Mo_Cmd_Fact, 0, wxALL, 5 );

	m_staticText4 = new wxStaticText( sbSizer1->GetStaticBox(), wxID_ANY, wxT("Commande International:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText4->Wrap( -1 );
	gSizer1->Add( m_staticText4, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Mo_Cmd_Intl = new wxTextCtrl( sbSizer1->GetStaticBox(), wxID_EDT_OP_MO_CMD_INTL, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer1->Add( m_Edt_Op_Mo_Cmd_Intl, 0, wxALL, 5 );

	m_staticText5 = new wxStaticText( sbSizer1->GetStaticBox(), wxID_ANY, wxT("Commande Mobilis Pixx:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText5->Wrap( -1 );
	gSizer1->Add( m_staticText5, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Mo_Cmd_Mo_Pixx = new wxTextCtrl( sbSizer1->GetStaticBox(), wxID_EDT_OP_MO_CMD_MO_PIXX, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer1->Add( m_Edt_Op_Mo_Cmd_Mo_Pixx, 0, wxALL, 5 );

	m_staticText6 = new wxStaticText( sbSizer1->GetStaticBox(), wxID_ANY, wxT("Code PIN:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText6->Wrap( -1 );
	gSizer1->Add( m_staticText6, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Mo_Code_PIN = new wxTextCtrl( sbSizer1->GetStaticBox(), wxID_EDT_OP_MO_CODE_PIN, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer1->Add( m_Edt_Op_Mo_Code_PIN, 0, wxALL, 5 );


	sbSizer1->Add( gSizer1, 0, wxEXPAND, 5 );

	wxStaticBoxSizer* sbSizer7;
	sbSizer7 = new wxStaticBoxSizer( new wxStaticBox( sbSizer1->GetStaticBox(), wxID_ANY, wxT("Réponse de l'Opération SMS:") ), wxVERTICAL );

	wxGridSizer* gSizer2;
	gSizer2 = new wxGridSizer( 0, 2, 0, 0 );

	m_staticText7 = new wxStaticText( sbSizer7->GetStaticBox(), wxID_ANY, wxT("Réponse Oui:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText7->SetLabelMarkup( wxT("Réponse Oui:") );
	m_staticText7->Wrap( -1 );
	gSizer2->Add( m_staticText7, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Mo_Rep_Oui = new wxTextCtrl( sbSizer7->GetStaticBox(), wxID_EDT_OP_MO_REP_OUI, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer2->Add( m_Edt_Op_Mo_Rep_Oui, 0, wxALL, 5 );

	m_staticText8 = new wxStaticText( sbSizer7->GetStaticBox(), wxID_ANY, wxT("Réponse Non:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText8->Wrap( -1 );
	gSizer2->Add( m_staticText8, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Mo_Rep_Non = new wxTextCtrl( sbSizer7->GetStaticBox(), wxID_EDT_OP_MO_REP_NON, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer2->Add( m_Edt_Op_Mo_Rep_Non, 0, wxALL, 5 );


	sbSizer7->Add( gSizer2, 0, wxEXPAND, 5 );


	sbSizer1->Add( sbSizer7, 0, wxEXPAND, 5 );

	wxStaticBoxSizer* sbSizer41;
	sbSizer41 = new wxStaticBoxSizer( new wxStaticBox( sbSizer1->GetStaticBox(), wxID_ANY, wxT("Filtre d'Expression du Solde:") ), wxVERTICAL );

	wxFlexGridSizer* fgSizer1;
	fgSizer1 = new wxFlexGridSizer( 0, 2, 0, 0 );
	fgSizer1->AddGrowableCol( 1 );
	fgSizer1->SetFlexibleDirection( wxHORIZONTAL );
	fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );

	m_staticText9 = new wxStaticText( sbSizer41->GetStaticBox(), wxID_ANY, wxT("Entre:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText9->Wrap( -1 );
	fgSizer1->Add( m_staticText9, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Mo_Fltr_Exp_Sld_Entr = new wxTextCtrl( sbSizer41->GetStaticBox(), wxID_EDT_OP_MO_FLTR_EXP_SLD_ENTR, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	fgSizer1->Add( m_Edt_Op_Mo_Fltr_Exp_Sld_Entr, 0, wxALL|wxEXPAND, 5 );

	m_staticText10 = new wxStaticText( sbSizer41->GetStaticBox(), wxID_ANY, wxT("Et:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText10->Wrap( -1 );
	fgSizer1->Add( m_staticText10, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Mo_Fltr_Exp_Sld_Et = new wxTextCtrl( sbSizer41->GetStaticBox(), wxID_EDT_OP_MO_FLTR_EXP_SLD_ET, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	fgSizer1->Add( m_Edt_Op_Mo_Fltr_Exp_Sld_Et, 0, wxALL|wxEXPAND, 5 );


	sbSizer41->Add( fgSizer1, 0, wxEXPAND, 5 );


	sbSizer1->Add( sbSizer41, 0, wxEXPAND, 5 );

	wxBoxSizer* bSizer191;
	bSizer191 = new wxBoxSizer( wxVERTICAL );

	m_Chk_Op_Mo_Conf_Auto = new wxCheckBox( sbSizer1->GetStaticBox(), wxID_CHK_OP_MO_CONF_AUTO, wxT("Confirmation Automatique:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	bSizer191->Add( m_Chk_Op_Mo_Conf_Auto, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );


	sbSizer1->Add( bSizer191, 0, wxEXPAND, 5 );

	m_staticline6 = new wxStaticLine( sbSizer1->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
	sbSizer1->Add( m_staticline6, 0, wxALL|wxEXPAND, 5 );

	wxBoxSizer* bSizer181;
	bSizer181 = new wxBoxSizer( wxVERTICAL );

	m_bitmap1 = new wxGenericStaticBitmap( sbSizer1->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 72,72 ), 0 );
	m_bitmap1->SetMinSize( wxSize( 72,72 ) );

	bSizer181->Add( m_bitmap1, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );


	sbSizer1->Add( bSizer181, 0, wxEXPAND, 5 );


	bSizer12->Add( sbSizer1, 1, wxALL|wxEXPAND, 5 );

	wxStaticBoxSizer* sbSizer3;
	sbSizer3 = new wxStaticBoxSizer( new wxStaticBox( m_scrolledWindow4, wxID_ANY, wxT("Djezzy:") ), wxVERTICAL );

	wxGridSizer* gSizer3;
	gSizer3 = new wxGridSizer( 0, 2, 0, 0 );

	m_staticText11 = new wxStaticText( sbSizer3->GetStaticBox(), wxID_ANY, wxT("Commande Solde:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText11->Wrap( -1 );
	gSizer3->Add( m_staticText11, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Dj_Cmd_Sld = new wxTextCtrl( sbSizer3->GetStaticBox(), wxID_EDT_OP_DJ_CMD_SLD, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer3->Add( m_Edt_Op_Dj_Cmd_Sld, 0, wxALL, 5 );

	m_staticText12 = new wxStaticText( sbSizer3->GetStaticBox(), wxID_ANY, wxT("Commande Transfert:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText12->Wrap( -1 );
	gSizer3->Add( m_staticText12, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Dj_Cmd_Trans = new wxTextCtrl( sbSizer3->GetStaticBox(), wxID_EDT_OP_DJ_CMD_TRANS, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer3->Add( m_Edt_Op_Dj_Cmd_Trans, 0, wxALL, 5 );

	m_staticText13 = new wxStaticText( sbSizer3->GetStaticBox(), wxID_ANY, wxT("Commande Facture:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText13->Wrap( -1 );
	gSizer3->Add( m_staticText13, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Dj_Cmd_Fact = new wxTextCtrl( sbSizer3->GetStaticBox(), wxID_EDT_OP_DJ_CMD_FACT, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer3->Add( m_Edt_Op_Dj_Cmd_Fact, 0, wxALL, 5 );

	m_staticText70 = new wxStaticText( sbSizer3->GetStaticBox(), wxID_ANY, wxT("MyLabel"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText70->Wrap( -1 );
	m_staticText70->Hide();

	gSizer3->Add( m_staticText70, 0, wxALL|wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxALIGN_RIGHT, 5 );

	m_textCtrl70 = new wxTextCtrl( sbSizer3->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
	m_textCtrl70->Hide();

	gSizer3->Add( m_textCtrl70, 0, wxALL|wxRESERVE_SPACE_EVEN_IF_HIDDEN, 5 );

	m_staticText14 = new wxStaticText( sbSizer3->GetStaticBox(), wxID_ANY, wxT("Commande Millenium / Hayla:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText14->Wrap( -1 );
	gSizer3->Add( m_staticText14, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Dj_Cmd_Ml_Hayla = new wxTextCtrl( sbSizer3->GetStaticBox(), wxID_EDT_OP_DJ_CMD_ML_HAYLA, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer3->Add( m_Edt_Op_Dj_Cmd_Ml_Hayla, 0, wxALL, 5 );

	m_staticText15 = new wxStaticText( sbSizer3->GetStaticBox(), wxID_ANY, wxT("Code PIN:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText15->Wrap( -1 );
	gSizer3->Add( m_staticText15, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Dj_Code_PIN = new wxTextCtrl( sbSizer3->GetStaticBox(), wxID_EDT_OP_DJ_CODE_PIN, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer3->Add( m_Edt_Op_Dj_Code_PIN, 0, wxALL, 5 );


	sbSizer3->Add( gSizer3, 0, wxEXPAND, 5 );

	wxStaticBoxSizer* sbSizer8;
	sbSizer8 = new wxStaticBoxSizer( new wxStaticBox( sbSizer3->GetStaticBox(), wxID_ANY, wxT("Réponse de l'Opération SMS:") ), wxVERTICAL );

	wxGridSizer* gSizer4;
	gSizer4 = new wxGridSizer( 0, 2, 0, 0 );

	m_staticText16 = new wxStaticText( sbSizer8->GetStaticBox(), wxID_ANY, wxT("Réponse Oui:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText16->Wrap( -1 );
	gSizer4->Add( m_staticText16, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Dj_Rep_Oui = new wxTextCtrl( sbSizer8->GetStaticBox(), wxID_EDT_OP_DJ_REP_OUI, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer4->Add( m_Edt_Op_Dj_Rep_Oui, 0, wxALL, 5 );

	m_staticText17 = new wxStaticText( sbSizer8->GetStaticBox(), wxID_ANY, wxT("Réponse Non:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText17->Wrap( -1 );
	gSizer4->Add( m_staticText17, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Dj_Rep_Non = new wxTextCtrl( sbSizer8->GetStaticBox(), wxID_EDT_OP_DJ_REP_NON, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer4->Add( m_Edt_Op_Dj_Rep_Non, 0, wxALL, 5 );


	sbSizer8->Add( gSizer4, 0, wxEXPAND, 5 );


	sbSizer3->Add( sbSizer8, 0, wxEXPAND, 5 );

	wxStaticBoxSizer* sbSizer26;
	sbSizer26 = new wxStaticBoxSizer( new wxStaticBox( sbSizer3->GetStaticBox(), wxID_ANY, wxT("Filtre d'Expression du Solde:") ), wxVERTICAL );

	wxFlexGridSizer* fgSizer2;
	fgSizer2 = new wxFlexGridSizer( 0, 2, 0, 0 );
	fgSizer2->AddGrowableCol( 1 );
	fgSizer2->SetFlexibleDirection( wxHORIZONTAL );
	fgSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );

	m_staticText18 = new wxStaticText( sbSizer26->GetStaticBox(), wxID_ANY, wxT("Entre:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText18->Wrap( -1 );
	fgSizer2->Add( m_staticText18, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Dj_Fltr_Exp_Sld_Entr = new wxTextCtrl( sbSizer26->GetStaticBox(), wxID_EDT_OP_DJ_FLTR_EXP_SLD_ENTR, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	fgSizer2->Add( m_Edt_Op_Dj_Fltr_Exp_Sld_Entr, 1, wxALL|wxEXPAND, 5 );

	m_staticText19 = new wxStaticText( sbSizer26->GetStaticBox(), wxID_ANY, wxT("Et:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText19->Wrap( -1 );
	fgSizer2->Add( m_staticText19, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Dj_Fltr_Exp_Sld_Et = new wxTextCtrl( sbSizer26->GetStaticBox(), wxID_EDT_OP_DJ_FLTR_EXP_SLD_ET, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	fgSizer2->Add( m_Edt_Op_Dj_Fltr_Exp_Sld_Et, 1, wxALL|wxEXPAND, 5 );


	sbSizer26->Add( fgSizer2, 0, wxEXPAND, 5 );


	sbSizer3->Add( sbSizer26, 0, wxEXPAND, 5 );

	wxBoxSizer* bSizer30;
	bSizer30 = new wxBoxSizer( wxHORIZONTAL );

	m_Chk_Op_Dj_Conf_Auto = new wxCheckBox( sbSizer3->GetStaticBox(), wxID_CHK_OP_DJ_CONF_AUTO, wxT("Confirmation Automatique:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	bSizer30->Add( m_Chk_Op_Dj_Conf_Auto, 0, wxALL, 5 );


	sbSizer3->Add( bSizer30, 0, wxEXPAND, 5 );

	m_staticline5 = new wxStaticLine( sbSizer3->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
	sbSizer3->Add( m_staticline5, 0, wxEXPAND|wxALL, 5 );

	wxBoxSizer* bSizer31;
	bSizer31 = new wxBoxSizer( wxVERTICAL );

	m_bitmap2 = new wxGenericStaticBitmap( sbSizer3->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 72,72 ), 0 );
	m_bitmap2->SetMinSize( wxSize( 72,72 ) );

	bSizer31->Add( m_bitmap2, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );


	sbSizer3->Add( bSizer31, 0, wxEXPAND, 5 );


	bSizer12->Add( sbSizer3, 1, wxALL|wxEXPAND, 5 );

	wxStaticBoxSizer* sbSizer4;
	sbSizer4 = new wxStaticBoxSizer( new wxStaticBox( m_scrolledWindow4, wxID_ANY, wxT("Ooredoo:") ), wxVERTICAL );

	wxGridSizer* gSizer5;
	gSizer5 = new wxGridSizer( 0, 2, 0, 0 );

	m_staticText20 = new wxStaticText( sbSizer4->GetStaticBox(), wxID_ANY, wxT("Commande Solde:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText20->Wrap( -1 );
	gSizer5->Add( m_staticText20, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Oo_Cmd_Sld = new wxTextCtrl( sbSizer4->GetStaticBox(), wxID_EDT_OP_OO_CMD_SLD, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer5->Add( m_Edt_Op_Oo_Cmd_Sld, 0, wxALL, 5 );

	m_staticText21 = new wxStaticText( sbSizer4->GetStaticBox(), wxID_ANY, wxT("Commande Transfert:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText21->Wrap( -1 );
	gSizer5->Add( m_staticText21, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Oo_Cmd_Trans = new wxTextCtrl( sbSizer4->GetStaticBox(), wxID_EDT_OP_OO_CMD_TRANS, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer5->Add( m_Edt_Op_Oo_Cmd_Trans, 0, wxALL, 5 );

	m_staticText701 = new wxStaticText( sbSizer4->GetStaticBox(), wxID_ANY, wxT("MyLabel"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText701->Wrap( -1 );
	m_staticText701->Hide();

	gSizer5->Add( m_staticText701, 0, wxALL|wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxALIGN_RIGHT, 5 );

	m_textCtrl701 = new wxTextCtrl( sbSizer4->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
	m_textCtrl701->Hide();

	gSizer5->Add( m_textCtrl701, 0, wxALL|wxRESERVE_SPACE_EVEN_IF_HIDDEN, 5 );

	m_staticText7011 = new wxStaticText( sbSizer4->GetStaticBox(), wxID_ANY, wxT("MyLabel"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText7011->Wrap( -1 );
	m_staticText7011->Hide();

	gSizer5->Add( m_staticText7011, 0, wxALL|wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxALIGN_RIGHT, 5 );

	m_textCtrl7011 = new wxTextCtrl( sbSizer4->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
	m_textCtrl7011->Hide();

	gSizer5->Add( m_textCtrl7011, 0, wxALL|wxRESERVE_SPACE_EVEN_IF_HIDDEN, 5 );

	m_staticText22 = new wxStaticText( sbSizer4->GetStaticBox(), wxID_ANY, wxT("Commande Maxy:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText22->Wrap( -1 );
	gSizer5->Add( m_staticText22, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Oo_Cmd_Maxy = new wxTextCtrl( sbSizer4->GetStaticBox(), wxID_EDT_OP_OO_CMD_MAXY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer5->Add( m_Edt_Op_Oo_Cmd_Maxy, 0, wxALL, 5 );

	m_staticText23 = new wxStaticText( sbSizer4->GetStaticBox(), wxID_ANY, wxT("Code PIN:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText23->Wrap( -1 );
	gSizer5->Add( m_staticText23, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Oo_Code_PIN = new wxTextCtrl( sbSizer4->GetStaticBox(), wxID_EDT_OP_OO_CODE_PIN, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer5->Add( m_Edt_Op_Oo_Code_PIN, 0, wxALL, 5 );


	sbSizer4->Add( gSizer5, 0, wxEXPAND, 5 );

	wxStaticBoxSizer* sbSizer9;
	sbSizer9 = new wxStaticBoxSizer( new wxStaticBox( sbSizer4->GetStaticBox(), wxID_ANY, wxT("Réponse de l'Opération SMS:") ), wxVERTICAL );

	wxGridSizer* gSizer6;
	gSizer6 = new wxGridSizer( 0, 2, 0, 0 );

	m_staticText24 = new wxStaticText( sbSizer9->GetStaticBox(), wxID_ANY, wxT("Réponse Oui:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText24->Wrap( -1 );
	gSizer6->Add( m_staticText24, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Oo_Rep_Oui = new wxTextCtrl( sbSizer9->GetStaticBox(), wxID_EDT_OP_OO_REP_OUI, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer6->Add( m_Edt_Op_Oo_Rep_Oui, 0, wxALL, 5 );

	m_staticText25 = new wxStaticText( sbSizer9->GetStaticBox(), wxID_ANY, wxT("Réponse Non:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText25->Wrap( -1 );
	gSizer6->Add( m_staticText25, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Oo_Rep_Non = new wxTextCtrl( sbSizer9->GetStaticBox(), wxID_EDT_OP_OO_REP_NON, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	gSizer6->Add( m_Edt_Op_Oo_Rep_Non, 0, wxALL, 5 );


	sbSizer9->Add( gSizer6, 0, wxEXPAND, 5 );


	sbSizer4->Add( sbSizer9, 0, wxEXPAND, 5 );

	wxStaticBoxSizer* sbSizer27;
	sbSizer27 = new wxStaticBoxSizer( new wxStaticBox( sbSizer4->GetStaticBox(), wxID_ANY, wxT("Filtre d'Expression du Solde:") ), wxVERTICAL );

	wxFlexGridSizer* fgSizer3;
	fgSizer3 = new wxFlexGridSizer( 0, 2, 0, 0 );
	fgSizer3->AddGrowableCol( 1 );
	fgSizer3->SetFlexibleDirection( wxHORIZONTAL );
	fgSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );

	m_staticText26 = new wxStaticText( sbSizer27->GetStaticBox(), wxID_ANY, wxT("Entre:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText26->Wrap( -1 );
	fgSizer3->Add( m_staticText26, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Oo_Fltr_Exp_Sld_Entr = new wxTextCtrl( sbSizer27->GetStaticBox(), wxID_EDT_OP_OO_FLTR_EXP_SLD_ENTR, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	fgSizer3->Add( m_Edt_Op_Oo_Fltr_Exp_Sld_Entr, 1, wxALL|wxEXPAND, 5 );

	m_staticText27 = new wxStaticText( sbSizer27->GetStaticBox(), wxID_ANY, wxT("Et:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	m_staticText27->Wrap( -1 );
	fgSizer3->Add( m_staticText27, 0, wxALL|wxALIGN_RIGHT, 5 );

	m_Edt_Op_Oo_Fltr_Exp_Sld_Et = new wxTextCtrl( sbSizer27->GetStaticBox(), wxID_EDT_OP_OO_FLTR_EXP_SLD_ET, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTER );
	fgSizer3->Add( m_Edt_Op_Oo_Fltr_Exp_Sld_Et, 1, wxALL|wxEXPAND, 5 );


	sbSizer27->Add( fgSizer3, 0, wxEXPAND, 5 );


	sbSizer4->Add( sbSizer27, 0, wxEXPAND, 5 );

	wxBoxSizer* bSizer39;
	bSizer39 = new wxBoxSizer( wxVERTICAL );

	m_Chk_Op_Oo_Conf_Auto = new wxCheckBox( sbSizer4->GetStaticBox(), wxID_CHK_OP_OO_CONF_AUTO, wxT("Confirmation Automatique:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
	bSizer39->Add( m_Chk_Op_Oo_Conf_Auto, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );


	sbSizer4->Add( bSizer39, 0, wxEXPAND, 5 );

	m_staticline4 = new wxStaticLine( sbSizer4->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
	sbSizer4->Add( m_staticline4, 0, wxALL|wxEXPAND, 5 );

	wxBoxSizer* bSizer40;
	bSizer40 = new wxBoxSizer( wxVERTICAL );

	m_bitmap3 = new wxGenericStaticBitmap( sbSizer4->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 72,72 ), 0 );
	m_bitmap3->SetMinSize( wxSize( 72,72 ) );

	bSizer40->Add( m_bitmap3, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );


	sbSizer4->Add( bSizer40, 0, wxEXPAND, 5 );


	bSizer12->Add( sbSizer4, 1, wxALL|wxEXPAND, 5 );


	bSizer5->Add( bSizer12, 0, wxEXPAND, 5 );

	m_Btn_Enregistrer = new wxButton( m_scrolledWindow4, wxID_SAVE_BTN, wxT("Enregistrer"), wxDefaultPosition, wxDefaultSize, 0 );
	m_Btn_Enregistrer->SetLabelMarkup( wxT("Enregistrer") );
	m_Btn_Enregistrer->SetBitmap( wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_BUTTON) );
	m_Btn_Enregistrer->SetBitmapPosition( wxRIGHT );
	bSizer5->Add( m_Btn_Enregistrer, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );


	m_scrolledWindow4->SetSizer( bSizer5 );
	m_scrolledWindow4->Layout();
	bSizer5->Fit( m_scrolledWindow4 );
	m_simplebook1->AddPage( m_scrolledWindow4, wxT("a page"), false );
	m_scrolledWindow5 = new wxScrolledWindow( m_simplebook1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
	m_scrolledWindow5->SetScrollRate( 5, 5 );
	wxBoxSizer* bSizer6;
	bSizer6 = new wxBoxSizer( wxVERTICAL );


	m_scrolledWindow5->SetSizer( bSizer6 );
	m_scrolledWindow5->Layout();
	bSizer6->Fit( m_scrolledWindow5 );
	m_simplebook1->AddPage( m_scrolledWindow5, wxT("a page"), false );

	bSizer1->Add( m_simplebook1, 1, wxEXPAND, 5 );


	this->SetSizer( bSizer1 );
	this->Layout();
	menuBar = new wxMenuBar( 0 );
	menuBar->Hide();

	fileMenu = new wxMenu();
	wxMenuItem* menuFileQuit;
	menuFileQuit = new wxMenuItem( fileMenu, idMenuQuit, wxString( wxT("&Quit") ) + wxT('\t') + wxT("Alt+F4"), wxT("Quit the application"), wxITEM_NORMAL );
	fileMenu->Append( menuFileQuit );

	menuBar->Append( fileMenu, wxT("&File") );

	helpMenu = new wxMenu();
	wxMenuItem* menuHelpAbout;
	menuHelpAbout = new wxMenuItem( helpMenu, idMenuAbout, wxString( wxT("&About") ) + wxT('\t') + wxT("F1"), wxT("Show info about this application"), wxITEM_NORMAL );
	helpMenu->Append( menuHelpAbout );

	menuBar->Append( helpMenu, wxT("&Help") );

	this->SetMenuBar( menuBar );

	statusBar = this->CreateStatusBar( 1, wxSTB_DEFAULT_STYLE, wxID_STATUSBAR );

	this->Centre( wxBOTH );

	// Connect Events
	this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( MainFrame::OnClose ) );
	this->Connect( wxID_ANY, wxEVT_COMMAND_RIBBONBAR_PAGE_CHANGED, wxRibbonBarEventHandler( MainFrame::OnRibbonBarPageChanged ) );
	this->Connect( wxID_CLOSE, wxEVT_COMMAND_RIBBONBUTTON_CLICKED, wxRibbonButtonBarEventHandler( MainFrame::OnClose ) );
	this->Connect( wxID_ABOUT, wxEVT_COMMAND_RIBBONBUTTON_CLICKED, wxRibbonButtonBarEventHandler( MainFrame::OnAbout ) );
	this->Connect( wxID_FACEBOOK, wxEVT_COMMAND_RIBBONBUTTON_CLICKED, wxRibbonButtonBarEventHandler( MainFrame::OnFacebook ) );
	this->Connect( wxID_YOUTUBE, wxEVT_COMMAND_RIBBONBUTTON_CLICKED, wxRibbonButtonBarEventHandler( MainFrame::OnYoutube ) );
	m_Btn_Recherche->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainFrame::m_Btn_Recherche_OnButtonClick ), NULL, this );
	m_Btn_Annuler->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainFrame::m_Btn_Annuler_OnButtonClick ), NULL, this );
	m_Btn_Enregistrer->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainFrame::m_Btn_Enregistrer_OnButtonClick ), NULL, this );
	fileMenu->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainFrame::OnQuit ), this, menuFileQuit->GetId());
	helpMenu->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainFrame::OnAbout ), this, menuHelpAbout->GetId());
}

MainFrame::~MainFrame()
{
	// Disconnect Events
	this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( MainFrame::OnClose ) );
	this->Disconnect( wxID_ANY, wxEVT_COMMAND_RIBBONBAR_PAGE_CHANGED, wxRibbonBarEventHandler( MainFrame::OnRibbonBarPageChanged ) );
	this->Disconnect( wxID_CLOSE, wxEVT_COMMAND_RIBBONBUTTON_CLICKED, wxRibbonButtonBarEventHandler( MainFrame::OnClose ) );
	this->Disconnect( wxID_ABOUT, wxEVT_COMMAND_RIBBONBUTTON_CLICKED, wxRibbonButtonBarEventHandler( MainFrame::OnAbout ) );
	this->Disconnect( wxID_FACEBOOK, wxEVT_COMMAND_RIBBONBUTTON_CLICKED, wxRibbonButtonBarEventHandler( MainFrame::OnFacebook ) );
	this->Disconnect( wxID_YOUTUBE, wxEVT_COMMAND_RIBBONBUTTON_CLICKED, wxRibbonButtonBarEventHandler( MainFrame::OnYoutube ) );
	m_Btn_Recherche->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainFrame::m_Btn_Recherche_OnButtonClick ), NULL, this );
	m_Btn_Annuler->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainFrame::m_Btn_Annuler_OnButtonClick ), NULL, this );
	m_Btn_Enregistrer->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainFrame::m_Btn_Enregistrer_OnButtonClick ), NULL, this );

}

void MainFrame::OnRibbonBarPageChanged(wxRibbonBarEvent& WXUNUSED(event))
{
    int activePage = m_ribbonBar1->GetActivePage();
    m_simplebook1->SetSelection(activePage);

    switch (activePage)
    {
    case 0:
        break;

    case 1:
        break;

    case 2:
        break;

    case 3:
        break;

    case 4:
        break;

    default:
        break;
    }
}

class MyApp : public wxApp
{
public:        
    bool OnInit()
    {
        (new MainFrame(NULL))->Show();        
        return true;
    }   
}; wxIMPLEMENT_APP(MyApp);
Thank you for your understanding.

PB
Part Of The Furniture
Part Of The Furniture
Posts: 1915
Joined: Sun Jan 03, 2010 5:45 pm

Re: [wxMSW][wx v3.1.2] wxScrolledWindow wont cause the child controls to be repainted

Post by PB » Wed Jan 02, 2019 12:10 pm

I could reproduce the issue using your code. However, while it is entirely possible that the issue is within wxScrolledWindow, it is as also possible that the issue is in your code which manifests only in certain circumstances.

It is difficult to say which of the two it is, considering your code is almost 1,000 lines long and to me looking basically unreadable (e.g., unintuitive variable names for controls and sizers). That is why I recommended the usual approach to pinpoint the problem, i.e., either starting with full problematic code and gradually removing the parts of it until it starts working or starting with minimal working code and continually adding parts to it until it breaks.

As it is, I do not think it would be very helpful to report as a wxWidgets bug, but of course, I may be wrong.

But perhaps someone else here can be more helpful...

User avatar
doublemax
Moderator
Moderator
Posts: 13320
Joined: Fri Apr 21, 2006 8:03 pm
Location: $FCE2

Re: [wxMSW][wx v3.1.2] wxScrolledWindow wont cause the child controls to be repainted

Post by doublemax » Wed Jan 02, 2019 1:57 pm

Like PB already said, you'll have to strip down the code to a bare minimum that shows the issue. Especially if you intend to open a bug report.

Looking at the screenshot, what Windows theme is that?

Adding this line removed the redraw issue for me under Windows 7. (Although it's more a workaround than a fix):

Code: Select all

m_scrolledWindow3->SetDoubleBuffered(true);
Use the source, Luke!

tomay3000
Earned some good credits
Earned some good credits
Posts: 116
Joined: Mon Apr 24, 2017 4:23 am

Re: [wxMSW][wx v3.1.2] wxScrolledWindow wont cause the child controls to be repainted

Post by tomay3000 » Wed Jan 02, 2019 3:52 pm

doublemax wrote:Like PB already said, you'll have to strip down the code to a bare minimum that shows the issue. Especially if you intend to open a bug report.
OK
Looking at the screenshot, what Windows theme is that?
It is a custom theme: "Office 2007" that is loaded dynamically in the application by a theme engine called "Easy Skin":
Here you go:
EasySkin.7z
(951.31 KiB) Downloaded 15 times
Try it your self, it is very easy, read "READ ME.txt" for instructions.
Adding this line removed the redraw issue for me under Windows 7. (Although it's more a workaround than a fix):

Code: Select all

m_scrolledWindow3->SetDoubleBuffered(true);
WOW, nice workaround trick, I did not know about it before. It is very flicker-free and clean. Will it work under windows XP?
Thank you.

User avatar
doublemax
Moderator
Moderator
Posts: 13320
Joined: Fri Apr 21, 2006 8:03 pm
Location: $FCE2

Re: [wxMSW][wx v3.1.2] wxScrolledWindow wont cause the child controls to be repainted

Post by doublemax » Wed Jan 02, 2019 10:57 pm

Will it work under windows XP?
Theoretically yes, but you should try it out.

Also, you shouldn't just start adding that call everywhere. It's sometimes hit-or-miss. I had cases with deeply nested controls where enabling double-buffering made some controls disappear completely.
Use the source, Luke!

Post Reply