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 :

[wxwidgets] creation identifiant


Sujet :

wxWidgets

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut [wxwidgets] creation identifiant
    Bonjour

    Voilà j'aimearai savoir, quand je creer une wxFrame avec un bouton à l'interieur ayant comme ID : ID_BOUTON1

    Est ce que si je cree un wxPanel (dans cettre frame ou pas mais toujours dans la meme fenetre) si je cree un bouton ID_BOUTON1, il aura comme reponse aux evenements elui de mon autre bouton ?

    En clair : est ce que les ID sont globals ou chq wxWindow à des composants qui ont un id. Et donc 2 wxWindows peuvent avoir un composants chacun avec l'Id ID_BOUTON1 sans que l'un influence l'autre ?

    je sais pas si c'est tres clair ?

    merci

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    J'ai déjà constaté quelques conflits en choisissant des ID de même valeur, mieux vaut avoir des identifiants globaux.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    mais helas defois ce n'est pas possible par exemple, j'ai un bouton qui me rajoute des panels(dasn un notebook) es panels ont des boutons, texte... des qu'ont les crée....donc je ne vois pas comment faire d'autre....

    j'ai donc un truc genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class MonPanel : public wxPanel
    {
      enum
      {
         ID_BOUTON1 = wxID_HIGHEST+1,
         ID_BOUTON2,
     };
    }
    donc des que je cree un nouveau "MonPanel" il a les identifiants !

  4. #4
    Membre régulier Avatar de Mucho
    Inscrit en
    Décembre 2005
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 221
    Points : 109
    Points
    109
    Par défaut
    Effectivement les ID sont globaux ( ce qui est logique et très pratique )


    pour résoudre ton problème tu peux définir tes IDs en laissant une marge du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    enum
      {
         ID_BOUTON_M = wxID_HIGHEST+1,
         ID_BOUTON_P1 = wxID_HIGHEST+101,
         ID_BOUTON_P2 = wxID_HIGHEST+201
     };
    Ainsi tu peux avoir une centaine d'IDs uniques disponibles pour chaque panel.

    (c'est pas très clair donc si tu veux plus d'explication c'est possible)

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    euh non c'est pas tres clair en effet

    par exemple, iagionons que wxID_HIGHEST+1 = 3 (c'est un exemple)

    quand je fait

    MonPAnel* p = new MonPanel(...)
    MonPAnel* p1 = new MonPanel(...)
    MonPAnel* p2 = new MonPanel(...)

    Dans p, p1, p2, j'aurai toujours un bouton avec l'ID 3 dans mes panels non ?

  6. #6
    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 : 39
    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
    Rien ne t'empêche d'avoir des plages d'ID différentes pour chaque instance de Panel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class MonPanel : public wxPanel
    {
    public :
     
        MonPanel(int BaseID, ...);
    };
     
    MonPanel* p = new MonPanel(100, ...);
    MonPanel* p1 = new MonPanel(200, ...);
    MonPanel* p2 = new MonPanel(300, ...);
    Après, je ne sais pas si c'est la solution la plus propre...

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    ah bien , mes panels etant crées par l'utilisateurs il faudrait donc que je stocke le dernier intervalle !!!

    Et du coups les evenements, je dois les "connecter" dynamiquement (methode Connect)

    Maintenant si c'est la plus propre.. e ne sais pas mais elle me plait

    merci

    bien sur je suis ouvert à d'autres propositions (meilleurs ?) !!!!

  8. #8
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    Euh d'ailleurs ma solution marche (mettre le enum dans la classe), je n'ai aucun probleme de conflit d'ID !!!

    Sinon autre question, j'ai donc plusieurs classe qui derive de panel (panelIcone, paneFrame...) les identifiants pour ces classes, est il mieux de les declarer dans un fichier "utilsID.h" ou chq classe possede son petit enum.... ?

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Si tu veux éviter tout conflit d'id, mieux vaut utiliser la fonction "wxNewId()":

    dans ton cpp:

    const int C_MyButton1 = wxNewId();
    const int C_MyButton2 = wxNewId();
    ...

    BEGIN_EVENT_TABLE(MyFrame, wxFrame)
    EVT_BUTTON(C_MyButton1,frame::button_1)
    EVT_BUTTON(C_MyButton2,frame::button_2)
    END_EVENT_TABLE()

    ...

    Si tu as besoin de récupérer l'ID de ton bouton dans le code, tu peux utiliser la méthode GetId()

  10. #10
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    hummmm, interessant je ne onnaissait pas cette fonction

    et si dans on met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    const int C_MyButton1 = wxNewId();
    const int C_MyButton2 = wxNewId();
    ...
     
    BEGIN_EVENT_TABLE(MyFrame, wxFrame)
    EVT_BUTTON(C_MyButton1,frame::button_1)
    EVT_BUTTON(C_MyButton2,frame::button_2)
    END_EVENT_TABLE()
    si je fais :

    MyFrame* f1 = new MyFrame(..);
    MyFrame* f2 = new MyFrame(..);

    Auront ils bien des identifiant differents ?

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Désolé pour le retard...

    Tu as peut être déjà ta réponse, mais comme tu utilises wxNewId() dans le cpp, à chaque instanciation de ta classe, tu auras de nouveaux id.

Discussions similaires

  1. [VB6] Création de composant
    Par Tchetch dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/10/2002, 14h52
  2. [c++ builder] creation de surface sur TPanel
    Par JEG dans le forum DirectX
    Réponses: 7
    Dernier message: 23/09/2002, 22h41
  3. [Kylix] SIGSEGV 11 - creation form
    Par pram dans le forum EDI
    Réponses: 1
    Dernier message: 29/08/2002, 15h24
  4. Creation de fiche dynamique
    Par Mouss26 dans le forum C++Builder
    Réponses: 7
    Dernier message: 24/07/2002, 07h56
  5. Creation d une clee dans la registry en VC++
    Par rico27fr dans le forum MFC
    Réponses: 4
    Dernier message: 30/05/2002, 12h36

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