IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

wxWidgets Discussion :

[WXMDIClientWindowBase] Comprendre l'exemple de base


Sujet :

wxWidgets

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 89
    Points : 86
    Points
    86
    Par défaut [WXMDIClientWindowBase] Comprendre l'exemple de base
    Bonjour,

    Suite a mon post sur la gestion de Multi Windows sur wxWidget, j'ai testé d'utiliser les DMI, +/- avec succes. Le sample est pas si fou que ca (en gros 0 commentaire dans le code, ce qui rend difficile sa lecture ^^ surtout que du wxWidget c'est pas si evident que ca a lire en y etant nouveau..).
    Bref, voila mon soucis :
    j'arrive tres bien a avoir 2 fenetres ouvertes independantes (non modal window) mais des lors que j'essaie de les creer en tant que wxMDIChildFrame et on en tant que wxFrame, je recois une erreur la : wxMDIClientWindow (dans mdi.h ligne 75 de la lib).
    J'imagine donc qu'il me faut un client window..

    1/ on a bien frame = window + toolbar+menu+'close/maximize/minimize' ?

    2/ Voila mon code qui me renvoie l'erreur a l'execution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    bool MyApp::OnInit()
    {
    	wxInitAllImageHandlers();
    	wxMDIParentFrame *mainWindow = new wxMDIParentFrame(NULL,1,"coucou");
    	wxFrame *frame = new MyFrame(mainWindow, "test1.txt", wxColour(255,0,0,0));
    	mainWindow->AddChild(frame);
    	frame->Show( TRUE );
     
    	wxFrame *frame2 = new MyFrame(mainWindow, "test2.txt", wxColour(0,255,0,0));
    	mainWindow->AddChild(frame2);
    	frame2->Show( TRUE );
    	mainWindow->Show(TRUE);
     
    	return TRUE;
    }
    et le constructeur de ma classe MyFrame :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MyFrame::MyFrame(wxMDIParentFrame* parent, std::string fileCurveName, wxColour color)
    	   : wxMDIChildFrame(parent, -1, wxT("Visualisation Tool"), wxDefaultPosition, wxSize(500, 500))
    {
    // creation de menu
    }
    NB : mon code "marche" avec des wxFrame au lieu des wxMDIChildFrame mais je n'arrive pas les inclure dans une window parente...
    Merci d'avance =)

    Pour etre plus clair, si ca peut marcher depuis le code que j'ai deja, je suis preneur aussi - cad simplement ajouter un parent a 2 wxFrame ...

    Edit : le code qui marche avec les wxFrame ressemblent a ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	wxFrame *frame = new MyFrame("test1.txt", wxColour(255,0,0,0));
    	frame->Show( TRUE );
     
    	wxFrame *frame2 = new MyFrame("test2.txt", wxColour(0,255,0,0));
    	frame2->Show( TRUE );
     
    	return TRUE;
    avec MyFrame qui extendent wxFrame et non wxMDIChildFrame...

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 89
    Points : 86
    Points
    86
    Par défaut
    Edit 2 : avec ceci comme code,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    	wxMDIParentFrame *parentFrame = new wxMDIParentFrame((wxFrame *)NULL, wxID_ANY, _T("parent"),
    						wxDefaultPosition, wxSize(500, 400),
    						wxDEFAULT_FRAME_STYLE | wxHSCROLL | wxVSCROLL);
    	wxMenuBar *menu_bar = new wxMenuBar();
    		wxMenu *file_menu = new wxMenu();
    	wxMenu *view_menu = new wxMenu();
    	//menu_bar->Append(file_menu, wxT("&File"));
    	//menu_bar->Append(view_menu, wxT("&View"));
     
    	parentFrame->SetMenuBar(menu_bar);
     
     
     
    	MyFrame *frame = new MyFrame(parentFrame, "test1.txt", wxColour(255,0,0,0));
    	//parentFrame->AddMDIChild(frame);
    	frame->Show(true);
     
    	MyFrame *frame2 = new MyFrame(parentFrame, "test2.txt", wxColour(0,255,0,0));
    	//parentFrame->AddMDIChild(frame2);
    	frame2->Show(true);
     
    	parentFrame->Show(TRUE);
     
    	return true;
    , et avec les Frame qui sont des MDIChildFrame, ca marche, mais pas en mode DEBUG ....
    J'ai des Assert de WxWidget qui sont pas respectes :
    assert "!m_menuBar" failed in wxMenuBase:Attach(): attaching menu twice?
    Call stack:
    [00] (...)
    [20] (...)
    Do you want to stop the program?
    You can chose Cancel to suppress further warnings
    Cliquer sur 'No' lance mon programme et j'obtiens ce que je veux, et le message d'erreur suivant a la fermeture du programme :
    ..\..\src\common\menucmn.cpp(689): assert "m_menuBar" failed in wxMenuBase:etach(): detaching unattached menu ?
    (...)
    si quelqu'un a une idee, merci

Discussions similaires

  1. Recherche d'exemples de base de données!
    Par jessy212 dans le forum Débuter
    Réponses: 3
    Dernier message: 15/09/2006, 16h51
  2. exemple de base
    Par ferid dans le forum Oracle
    Réponses: 1
    Dernier message: 04/07/2006, 12h25
  3. [Thread] aide pour comprendre un exemple
    Par maminova77 dans le forum 2D
    Réponses: 2
    Dernier message: 19/04/2006, 23h24
  4. [libxml2][SAX2] Recherche d'un exemple de base
    Par Djakisback dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 19/03/2006, 17h43
  5. exemple de bases sur le web
    Par lolothom dans le forum Access
    Réponses: 1
    Dernier message: 06/02/2006, 09h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo