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 :

[debutant]probleme avec wxwidgets


Sujet :

wxWidgets

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 23
    Points : 18
    Points
    18
    Par défaut [debutant]probleme avec wxwidgets
    bonjour,
    je debute en c++ et je suis entrain de faire un petit prog d'aprentissage sans pretantion avec wxwindows.
    mais je bloque a un endroit:

    base.h:
    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
    25
    26
    27
    28
    29
    30
    #ifndef __BASE_H
    #define __BASE_H
     
    class MainApp: public wxApp
    {
      public:
          virtual bool OnInit();
    };
     
    class MainFrame: public wxFrame
    {
      public:
          MainFrame(const wxString &title, const wxPoint &pos, const wxSize &size);
          void OnQuit(wxCommandEvent &event);
          void Envoyer(wxCommandEvent &event);
          wxTextCtrl *text;
          wxTextCtrl *Form;
          wxButton *bouton;
      private:
          DECLARE_EVENT_TABLE()
    };
     
    enum
    {
       ID_MAINWIN_QUIT = wxID_HIGHEST+1,
       BOUTON_ENVOYER,
    };
     
     
    #endif
    base.cpp
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    #include <wx/wxprec.h>
    #include <wx/textctrl.h>
    #ifndef WX_PRECOMP
       #include <wx/wx.h>
    #endif
     
    #include "base.h"
    #include <string>
     
    IMPLEMENT_APP(MainApp)
     
    bool MainApp::OnInit()
    {
       MainFrame *win = new MainFrame("chat", wxPoint (100, 100),
         wxSize(450, 340));
       win->Show(TRUE);
       SetTopWindow(win);
     
       return TRUE;
    }
     
     
    BEGIN_EVENT_TABLE(MainFrame, wxFrame)
       EVT_MENU(ID_MAINWIN_QUIT, MainFrame::OnQuit)
       EVT_BUTTON(BOUTON_ENVOYER, MainFrame::Envoyer)
    END_EVENT_TABLE()
     
    MainFrame::MainFrame(const wxString &title, const wxPoint &pos, const wxSize &size)
        : wxFrame((wxFrame *) NULL, -1, title, pos, size)
    {    
        wxTextCtrl *Text = new wxTextCtrl(this, -1, wxEmptyString, wxPoint(0,0), wxSize(450,250), wxTE_MULTILINE);
        Text->SetEditable(false);
     
        wxTextCtrl *Form = new wxTextCtrl(this, -1, wxEmptyString, wxPoint(0,250), wxSize(350,30), wxTE_MULTILINE);
        Form->SetEditable(true);
     
        wxButton *bouton = new wxButton(this, BOUTON_ENVOYER, "envoyer" , wxPoint(360,250));
     
    }
     
    void MainFrame::OnQuit(wxCommandEvent & WXUNUSED(event))
    {
        Close(TRUE);
    }
     
    void MainFrame::Envoyer(wxCommandEvent & WXUNUSED(event))
    {
         wxString valeur;
         valeur=Form->GetValue();
         Text->WriteText(valeur);
    }
    le prog compile mais lorsque je clique sur le bouton, il quitte.
    c'est donc la fonctionMainFrame::Envoyer qui cloche mais je n'arrive pas a trouver comment y remedier.
    savez vous ce qui ne va pas ?

  2. #2
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 030
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 030
    Points : 8 316
    Points
    8 316
    Par défaut
    Essais voir de déclarer ton enum comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    enum 
    { 
       ID_MAINWIN_QUIT = 1, 
       BOUTON_ENVOYER
    };

    De plus cette déclaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EVT_MENU(ID_MAINWIN_QUIT, MainFrame::OnQuit)
    n'est lié a aucun événement.
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 23
    Points : 18
    Points
    18
    Par défaut
    je sais mais ce n'est pa cela qui gene,
    c'est la fonction MainFrame::Envoyer() qui est en cause.

    j'ai essayer avec tes modification mais rien n'y fait.

    une autre idée?

  4. #4
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 030
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 030
    Points : 8 316
    Points
    8 316
    Par défaut
    Tu redéclare les membres de tes contrôles dans le constructeur
    il ne sont donc pas défini

    wxTextCtrl *Text = new wxTextCtrl(this, -1, wxEmptyString, wxPoint(0,0), wxSize(450,250), wxTE_MULTILINE);
    Text->SetEditable(false);

    wxTextCtrl *Form = new wxTextCtrl(this, -1, wxEmptyString, wxPoint(0,250), wxSize(350,30), wxTE_MULTILINE);
    Form->SetEditable(true);

    wxButton *bouton = new wxButton(this, BOUTON_ENVOYER, "envoyer" , wxPoint(360,250));

    Bon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        Text = new wxTextCtrl(this, -1, wxEmptyString, wxPoint(0,0), wxSize(450,250), wxTE_MULTILINE); 
        Text->SetEditable(false); 
     
        Form = new wxTextCtrl(this, -1, wxEmptyString, wxPoint(0,250), wxSize(350,30), wxTE_MULTILINE); 
        Form->SetEditable(true); 
     
        bouton = new wxButton(this, BOUTON_ENVOYER, "envoyer" , wxPoint(360,250));
    (
    wxTextCtrl *Text;
    )
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 23
    Points : 18
    Points
    18
    Par défaut
    j'ai essayer de chercher avec les pistes que tu m'a donner mais je n'ai pa trouver:

    si je ne les defini pas ds base.h, ca ne marche pas
    et je n'arrive pas a mettre les parametres ds base.h

    tu peut m'aider?
    en corrigeant mon code? pasque je comprend pa vraiment tes explication

  6. #6
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 030
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 030
    Points : 8 316
    Points
    8 316
    Par défaut
    Dans ton constructeur quand tu les crées il ne faut pas déclarer de variable sinon elle vont caché les données membres qui elle doivent
    bien être déclarée dans ton fichier base.h


    si je ne les defini pas ds base.h, ca ne marche pas
    Il faut les déclarer dans base.h
    mais il ne faut pas le redéclarer dans le constructeur mais seulement créer les objets sur lesquel ils pointent
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  7. #7
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 23
    Points : 18
    Points
    18
    Par défaut
    c bon ca marche avec ce que tu m'as dit mais maintenant losque je clique sur envoyer rien ne se passe.

    une autre solution :

  8. #8
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 23
    Points : 18
    Points
    18
    Par défaut
    personne ne peut m'aider?


  9. #9
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 030
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 030
    Points : 8 316
    Points
    8 316
    Par défaut
    Dans le code de ton 1er message tu avais écris la variable Text de deux façon :
    Text et text, a-tu rectifié ?
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  10. #10
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 23
    Points : 18
    Points
    18
    Par défaut
    oui le code qui ne marche pas c'est celui ci:

    base.h
    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
    25
    26
    27
    28
    29
    30
    #ifndef __BASE_H
    #define __BASE_H
     
    #include <wx/textctrl.h>
    class MainApp: public wxApp
    {
      public:
          virtual bool OnInit();
    };
     
    class MainFrame: public wxFrame
    {
      public:
          MainFrame(const wxString &title, const wxPoint &pos, const wxSize &size);
          void OnQuit(wxCommandEvent &event);
          void Envoyer(wxCommandEvent &event);
          private:
          wxTextCtrl Text;
          wxTextCtrl Form;
          wxButton bouton;
          DECLARE_EVENT_TABLE()
    };
     
    enum
    {
       ID_ENVOYER
    };
     
     
    #endif
    base.cpp
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    #include <wx/wxprec.h>
    #ifndef WX_PRECOMP
       #include <wx/wx.h>
    #endif
     
    #include "base.h"
    #include <string>
     
    IMPLEMENT_APP(MainApp)
     
    bool MainApp::OnInit()
    {
       MainFrame *win = new MainFrame("chat", wxPoint (100, 100),
         wxSize(450, 340));
       win->Show(TRUE);
       SetTopWindow(win);
     
       return TRUE;
    }
     
     
    BEGIN_EVENT_TABLE(MainFrame, wxFrame)
       EVT_BUTTON(ID_ENVOYER, MainFrame::Envoyer)
    END_EVENT_TABLE()
     
    MainFrame::MainFrame(const wxString &title, const wxPoint &pos, const wxSize &size)
        : wxFrame((wxFrame *) NULL, -1, title, pos, size)
    {
     
        wxTextCtrl *Text=&this->Text;
        Text = new wxTextCtrl(this, -1, wxEmptyString, wxPoint(0,0), wxSize(450,250), wxTE_MULTILINE);
     
        wxTextCtrl *Form = &this->Form;
        Form = new wxTextCtrl(this, -1, wxEmptyString, wxPoint(0,250), wxSize(350,30), wxTE_MULTILINE);
        Form->SetEditable(true);
     
        wxButton *bouton=&this->bouton; 
        bouton = new wxButton(this,ID_ENVOYER, "envoyer" , wxPoint(360,250));
     
    }
     
    void MainFrame::Envoyer(wxCommandEvent & WXUNUSED(event))
    {
         wxTextCtrl *Text=&this->Text;
     
         Text->WriteText("123456789");
    }

  11. #11
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 030
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 030
    Points : 8 316
    Points
    8 316
    Par défaut
    wxTextCtrl *Text=&this->Text
    Pourquoi tu mets cela ?

    Text est une donnée membre de ta classe elle est donc accéssible à la fonction membre Envoyer (en plus Text est déclaré public pas bien pour l'encapsulation)
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  12. #12
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 23
    Points : 18
    Points
    18
    Par défaut
    c'est bon j'ai reussi en definissant mes widgets ds main frame
    merci beaucoup a toi tu m'as bocoup aider!

Discussions similaires

  1. [debutant]probleme avec le copy constructor
    Par Battosaiii dans le forum Débuter
    Réponses: 10
    Dernier message: 09/11/2005, 10h33
  2. [Debutant] Probleme avec BevelBorder
    Par devil26 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 09/05/2005, 09h41
  3. [DEBUTANT] Probleme avec glortho
    Par barthelv dans le forum OpenGL
    Réponses: 12
    Dernier message: 23/11/2004, 14h21
  4. [DEBUTANT] probleme avec split ?
    Par matN59 dans le forum ASP
    Réponses: 6
    Dernier message: 23/10/2004, 15h47
  5. Réponses: 2
    Dernier message: 31/08/2004, 11h45

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