wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 2

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» frame, panel et wxflexsizer : le retour du rafraîchissement
Conversation (Résolue) : frame, panel et wxflexsizer : le retour du rafraîchissement
15-01-2010 14:50:00  frame, panel et wxflexsizer : le retour du rafraîchissement #1
milope (Membre)
Inscrit le : 07-01-2010
Messages: 34
Snippets: 0
Tutoriels: 0
Hors ligne
Bonjour !

Suite à la creation d'un treectrl et d'une grid, séparés par un flexsizer, contenus dans un panel, je me (re)trouve confronté à un probleme : si tout fonctionne convenablement sous linux, avec windows ce n'est pas aussi simple...

(codeblock + mingw ; même projet compilé sous linux (en crossplatform) et windows : meme resultats...).

Lorsque le fameux panel apparait, le treectrl et la grid semblent vide....
C'est seulement lorsque je clique dans le panel, puis dans la grille que tout apparait... jusqu'a ce que le panel soit redimensionné, et là, rebelotte : plus rien!

De plus, les intitulés des lignes et colonnes de la grille n'apparaissent jamais, quelle que soit la manip...

Bref, le caca!

Serait-ce juste un probleme de rafraîchissement, ou bien faut il oublier ces composants wxwidget pour un fonctionnement sous windows ?

Bien cordialement et merci d'avance !

C::B 10.05
wx 2.8.10 (unicode), Linux et MinGW
2 Intel Xeon 3GHz, 2G ram sous Ubuntu 10.04
15-01-2010 17:12:25  Re: frame, panel et wxflexsizer : le retour du rafraîchissement #2
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Salut

milope:
... faut il oublier ces composants wxwidget pour un fonctionnement sous windows ?
C'est un peu excessif, non ?
D'autant plus que si ces composants étaient à éviter sous Windows, ça se saurait, depuis le temps...

Le plus simple serait que tu mettes quelques captures des différents états, que l'on puisse plus facilement voir (et comprendre) le problème.

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
16-01-2010 13:33:02  Re: frame, panel et wxflexsizer : le retour du rafraîchissement #3
4ian (Membre)
Inscrit le : 06-11-2007
Messages: 48
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
J'utilise plein de TreeCtrl sans problèmes, et ai déjà utilisé une wxGrid sans problème non plus.

Un bout de code sur la déclaration par exemple de ces contrôles pourrait aussi aider je pense.

4ian

wwwcompilgames.net
18-01-2010 10:24:06  Re: frame, panel et wxflexsizer : le retour du rafraîchissement #4
milope (Membre)
Inscrit le : 07-01-2010
Messages: 34
Snippets: 0
Tutoriels: 0
Hors ligne
Bonjour à tous,

Voici donc trois screenshots :
(les flous sont rajoutés :)
1/ à la creation des panels, etc... (probleme ! ):
http://nsa11.casimages.com/img/2010/01/18/mini_100118074821254575.jpg

Déclaration du panel contenant le treectrl, etc...

Code Cpp:

Panel2::Panel2(wxWindow* parent,wxWindowID id,const wxPoint& pos,const wxSize& size)
{
    wxBoxSizer* Sizer1 = new wxBoxSizer(wxVERTICAL);
    SetSizer(Sizer1);
    Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE, _T("wxID_ANY"));
    SplitterWindow1 = new wxSplitterWindow(this, ID_SPLITTERWINDOW1, wxDefaultPosition, wxDefaultSize, wxSP_3D|wxFULL_REPAINT_ON_RESIZE, _T("ID_SPLITTERWINDOW1"));
    SplitterWindow1->SetMinSize(wxSize(10,10));
    SplitterWindow1->SetMinimumPaneSize(10);
    TreeCtrl1 = new wxTreeCtrl(SplitterWindow1, ID_TREECTRL1, wxPoint(13,16), wxDefaultSize, wxTR_DEFAULT_STYLE|wxFULL_REPAINT_ON_RESIZE, wxDefaultValidator, _T("ID_TREECTRL1"));
    Grid1 = new wxGrid(SplitterWindow1, ID_GRID1, wxPoint(14,12), wxDefaultSize, wxFULL_REPAINT_ON_RESIZE, _T("ID_GRID1"));
    SplitterWindow1->SplitVertically(TreeCtrl1, Grid1);
    Sizer1->Add(SplitterWindow1, 1, wxEXPAND, 10);
 
    PIHM_Frame->AfficherPanel2()
    PIHM_Frame->RaffraichirFrame();
}

creation du panel contenant le treectrl, etc...

Code Cpp:

void IHMFrame::AfficherPanel2()
{
    Panel2 = new Panel2(this, -1);
    PBoxSizer->Add(Panel2, 1, wxALL|wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP, 5);
    Panel2->Show();
}

Code Cpp:

void IHMFrame::RaffraichirFrame()
{
    GetSizer()->Layout();
    UpdateWindowUI();
}

2/ en redimentionnant la fenetre via le panel (en tirant la barre de titre) Là, tout est OK:
http://nsa11.casimages.com/img/2010/01/18/mini_100118074924375572.jpg

3/ en maximisant la fenetre, via le bouton de la barre de titre en haut à droite  (re-probleme ! ):
http://nsa10.casimages.com/img/2010/01/18/mini_100118075034986669.jpg

On se rends compte qu'un probleme de raffraichissement due au redimensionnement des panels apparait, qui ne se produit pas lors d'un redimensionnement de la frame...
Là encore, ca ne doit pas être très compliqué, mais je ne vois pas du tout...

Dernière modification par milope (18-01-2010 17:37:31)


C::B 10.05
wx 2.8.10 (unicode), Linux et MinGW
2 Intel Xeon 3GHz, 2G ram sous Ubuntu 10.04
18-01-2010 17:26:34  Re: frame, panel et wxflexsizer : le retour du rafraîchissement #5
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Heu... c'est moi ou on ne voit pas les captures ? :/

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
18-01-2010 17:37:47  Re: frame, panel et wxflexsizer : le retour du rafraîchissement #6
milope (Membre)
Inscrit le : 07-01-2010
Messages: 34
Snippets: 0
Tutoriels: 0
Hors ligne
modifié : l'hebergeur ne répondait plus... ils sont p'tetre cher kelio ;)

C::B 10.05
wx 2.8.10 (unicode), Linux et MinGW
2 Intel Xeon 3GHz, 2G ram sous Ubuntu 10.04
18-01-2010 17:46:56  Re: frame, panel et wxflexsizer : le retour du rafraîchissement #7
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
milope:

Code Cpp:

Panel2::Panel2(wxWindow* parent,wxWindowID id,const wxPoint& pos,const wxSize& size)
{
    wxBoxSizer* Sizer1 = new wxBoxSizer(wxVERTICAL);
    SetSizer(Sizer1);
    Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE, _T("wxID_ANY"));
    .........
 
Juste une petite remarque (je ne sais pas si le problème vient de là, mais ce n'est pas impossible) :
Tu crées le panel après lui avoir affecté le sizer : il vaudrait mieux faire l'inverse, non ?
Places la ligne "SetSizer(Sizer1)" après la liste "Create(......)" pour voir ce que ça donne.

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
19-01-2010 09:58:08  Re: frame, panel et wxflexsizer : le retour du rafraîchissement #8
milope (Membre)
Inscrit le : 07-01-2010
Messages: 34
Snippets: 0
Tutoriels: 0
Hors ligne
Xav:
Places la ligne "SetSizer(Sizer1)" après la liste "Create(......)" pour voir ce que ça donne.
Malheureusement, même résultat... le raffraichissement se produit sans probleme lorsque je tripotte la frame (par exemple déplacement ou redimensionnement de la fenêtre ; clic dans le menu).
mais sinon bug (au premier affichage de la fenêtre ; redimensionnement du sizer ; déplacement d'une scrollbar).

Sinon, voici la declaration de ma frame, au cas ou...

Code Cpp:

IHMFrame::IHMFrame(wxWindow* parent, wxWindowID id)
{
    Create(parent, id, _("bla bla"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE|wxFULL_REPAINT_ON_RESIZE, _T("id"));
    SetClientSize(wxSize(421,533));
    BoxSizer1 = new wxBoxSizer(wxHORIZONTAL);
    SetSizer(BoxSizer1);
    BoxSizer1->SetSizeHints(this);
    Center();
}


Et celui de l'application :

Code Cpp:

bool IHMApp::OnInit()
{
    bool wxsOK = true;
    wxInitAllImageHandlers();
    if ( wxsOK )
    {
        IHMFrame* Frame = new IHMFrame(0);
        Frame->Show();
        SetTopWindow(Frame);
    }
    return wxsOK;
}

Merci d'avance :)

C::B 10.05
wx 2.8.10 (unicode), Linux et MinGW
2 Intel Xeon 3GHz, 2G ram sous Ubuntu 10.04
22-01-2010 14:46:58  Re: frame, panel et wxflexsizer : le retour du rafraîchissement #9
etrange02 (Membre)
Lieu: Nantes
Inscrit le : 24-07-2009
Messages: 23
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
C'est une idée comme une autre. Essaye en mettant Sizer1 en attribut.
28-01-2010 17:46:21  Re: frame, panel et wxflexsizer : le retour du rafraîchissement #10
milope (Membre)
Inscrit le : 07-01-2010
Messages: 34
Snippets: 0
Tutoriels: 0
Hors ligne
Boaf, j'ai résolu le probleme en ne créant que des frames...
je trouve pas ca tres classe, mais bon...

Merci qd meme.

C::B 10.05
wx 2.8.10 (unicode), Linux et MinGW
2 Intel Xeon 3GHz, 2G ram sous Ubuntu 10.04
28-01-2010 18:34:41  Re: frame, panel et wxflexsizer : le retour du rafraîchissement #11
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Comment ça "en ne créant que des frames" ?
Tu as mis une frame pour chaque contrôle ?

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
29-01-2010 13:11:28  Re: frame, panel et wxflexsizer : le retour du rafraîchissement #12
milope (Membre)
Inscrit le : 07-01-2010
Messages: 34
Snippets: 0
Tutoriels: 0
Hors ligne
Xaviou:
Comment ça "en ne créant que des frames" ?
Tu as mis une frame pour chaque contrôle ?
J'ai mis des frames à la place des panels

C::B 10.05
wx 2.8.10 (unicode), Linux et MinGW
2 Intel Xeon 3GHz, 2G ram sous Ubuntu 10.04
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» frame, panel et wxflexsizer : le retour du rafraîchissement