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

Dev-C++ Discussion :

Question de débutant en C++ avec Dev C/C++ et FLTK


Sujet :

Dev-C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 13
    Points : 11
    Points
    11
    Par défaut Question de débutant en C++ avec Dev C/C++ et FLTK
    Bonjour,

    je viens de me lancer dans la programmation C++ avec GUI et j'ai choisi pour cela de développer avec Dev C/ C++ et FLTK.

    J'ai cependant une question qui me paraît basique mais après deux jours de Google intensif, je ne trouve toujours pas la réponse.

    Sans plus tarder, voici mon code, lequel provient d'un tutoriel :

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    #include <FL/Fl.H> 
    #include <FL/Fl_Window.H>
    #include <FL/Fl_Button.H>
    #include <FL/Fl_Int_Input.H>
    #include <FL/Fl_Output.H>
    #include <iostream>
    #include <string>
    using namespace std;
     
     
    class SimpleWindow : public Fl_Window{
     
       public:
          SimpleWindow(int w, int h, const char* title );
          ~SimpleWindow();
          Fl_Button* copy;
          Fl_Button* quit;
          Fl_Int_Input* inp;
          Fl_Output* out;
     
       private:
          static void cb_copy(Fl_Widget*, void*);
          inline void cb_copy_i();
     
          static void cb_quit(Fl_Widget*, void*);
          inline void cb_quit_i();
    };
     
     
    int main (){
     
       SimpleWindow win(300,200,"SimpleWindow");
       return Fl::run();
    }
     
     
     
    SimpleWindow::SimpleWindow(int w, int h, const char* title):Fl_Window(w,h,title){
     
       begin();
          copy = new Fl_Button( 10, 150, 70, 30, "C&opy");
          copy->callback( cb_copy, this );
     
          quit = new Fl_Button(100, 150, 70, 30, "&Quit");
          quit->callback(cb_quit, this);
     
          inp = new Fl_Int_Input(50, 50, 140, 30, "Input:");
          out = new Fl_Output(50, 100, 140, 30, "Output:");
       end();
       resizable(this);
       show();
    }
     
     
     
    SimpleWindow::~SimpleWindow(){}
     
     
     
    void SimpleWindow::cb_copy(Fl_Widget* o, void* v) { 
     
        ( (SimpleWindow*)v )->cb_copy_i();
    }
     
     
    void SimpleWindow::cb_copy_i() {
     
       out->value(inp->value());  
    }
     
     
    void SimpleWindow::cb_quit(Fl_Widget* , void* v) {
     
       ( (SimpleWindow*)v )->cb_quit_i();
    }
     
     
    void SimpleWindow::cb_quit_i() {
     
        hide();
    }
    Avec ce code, l'utilisateur rentre un nombre dans 'inp' et après avoir cliqué sur copy, le nombre s'affiche dans 'out'.

    Seulement, ce que je cherche à faire, et qui me paraît à priori plus utile pour la suite, c'est d'arriver à récupérer la valeur de 'inp' pour faire des calculs sur cette dernière et ensuite aficher le résultat sur 'out'. Comme pour faire par exemple quelquechose d'aussi simple qu'un convertisseur ou l'utilisateur rentre un montant et le programme fait un calcul du type res=montant * 6; et affiche le tout par 'out' par exemple.

    Et là, j'ai essayé d'imaginer toutes les syntaxes possibles mais je sèche.

    D'ailleurs, si il existe une classe Fl_Int_input pour permettre de rentrer des integers, pourquoi le la classe Fl_Output n'accèpte-t-elle que des const *char[] ?

    J'ai de plus en plus la sensation en tout cas de ne pas me poser les bonnes questions.

    Merci pour votre aide,
    JSK

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    J'ai mal compris, ou bien ton problème se résume juste à transformer une chaîne en entier et vice-versa ? Si c'est le cas il y a la réponse partout, notamment dans la FAQ.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    En fait, je désire simplement prendre le nombre que l'utilisateur rentre le input lors de l'exécution du programme, et lui ajouter 5 par exemple et l'afficher dans le output.

    Suite à ta réponse, j'ai essayé de convertir le nombre rentré en un string, puis de string à integer. J'ajoute par exemple 5 à cet integer et je change le nouveau résultat en string, puis une fois en string, je le convertis en char.

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
     
    #include <FL/Fl.H> 
    #include <FL/Fl_Window.H>
    #include <FL/Fl_Button.H>
    #include <FL/Fl_Int_Input.H>
    #include <FL/Fl_Output.H>
    #include <iostream>
    #include <sstream>
    #include <string>
    #include <fstream>
     
     
    using namespace std;
     
     
    class SimpleWindow : public Fl_Window{
     
       public:
          SimpleWindow(int w, int h, const char* title );
          ~SimpleWindow();
          Fl_Button* copy;
          Fl_Button* quit;
          Fl_Int_Input* inp;
          Fl_Output* out; 
          string rs;
          string result;
          const char* updated_result;
     
     
          int nombre;  
          int new_nb;
     
     
       private:
          static void cb_copy(Fl_Widget*, void*);
          inline void cb_copy_i();
     
          static void cb_quit(Fl_Widget*, void*);
          inline void cb_quit_i();
    };
     
     
    int main (){
     
       SimpleWindow win(300,200,"SimpleWindow");
       return Fl::run();
    }
     
     
     
    SimpleWindow::SimpleWindow(int w, int h, const char* title):Fl_Window(w,h,title){
     
       begin();
          copy = new Fl_Button( 10, 150, 70, 30, "C&opy");
          copy->callback( cb_copy, this );
     
          quit = new Fl_Button(100, 150, 70, 30, "&Quit");
          quit->callback(cb_quit, this);
     
          inp = new Fl_Int_Input(50, 50, 140, 30, "Input:");
          out = new Fl_Output(50, 100, 140, 30, "Output:");
       end();
       resizable(this);
       show();
    }
     
     
     
    SimpleWindow::~SimpleWindow(){}
     
     
     
    void SimpleWindow::cb_copy(Fl_Widget* o, void* v) { 
     
        ( (SimpleWindow*)v )->cb_copy_i();
    }
     
     
    void SimpleWindow::cb_copy_i() {
     
        //converts our input value to a string
        rs=inp->value();
     
        //converts string to integer and add 5
        std::istringstream iss( "10" );
        iss >> nombre; 
        new_nb=nombre+5;
     
        //converts new integer back to string
        std::ostringstream oss;
        oss << new_nb;
        std::string result = oss.str();
     
        //converts our freshly converted string to char
        ifstream file( result.c_str() ); 
        out->value(updated_result);  
    }
     
     
    void SimpleWindow::cb_quit(Fl_Widget* , void* v) {
     
       ( (SimpleWindow*)v )->cb_quit_i();
    }
     
     
    void SimpleWindow::cb_quit_i() {
     
        hide();
    }

    Dans tous les cas le code compile, mais si je ne commente pas le out->value(updated_result); , le programme crash une fois que j'ai rentré un nombre et cliqué sur copy.

    JSK

Discussions similaires

  1. Question de débutant dans mes premis pas avec FB
    Par jo.comeau dans le forum Débuter
    Réponses: 1
    Dernier message: 13/08/2010, 09h14
  2. [Débutant] Problème avec Dev-Cpp 4.9.9.0
    Par P4Pi dans le forum Dev-C++
    Réponses: 7
    Dernier message: 16/01/2010, 16h48
  3. [Question de débutant] Problème avec un VBoxLayout
    Par manudwarf dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 14/05/2009, 13h45
  4. Projet avec EJB question de débutant
    Par skyangel dans le forum Java EE
    Réponses: 5
    Dernier message: 03/06/2008, 12h37
  5. [Débutant] API WINDOWS pb de linker avec DEV-C++
    Par coolmaxou dans le forum Windows
    Réponses: 3
    Dernier message: 12/07/2005, 09h24

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