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

C++ Discussion :

Interaction entre deux forms Visual Studio


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Points : 18
    Points
    18
    Par défaut Interaction entre deux forms Visual Studio
    Bonjour,
    Je développe une application C++ à l'aide de Visual Studio 2010.

    Mon but :
    - Passer de la form1 à la form2.
    - La form2 récupère une information de la form1 (contenue dans un textbox).

    Mon problème :
    Aucun problème pour passer de la form1 à la form2, en revanche je ne parviens pas à récupérer les informations contenues dans la form1.

    Le problème vient des #include :
    Je fait un #include form2.h dans la form1 : pas de problème (passage d'une fenêtre à une autre).

    Je fait un #include form2.h dans la form1 et un #include form1.h dans la form2 plus rien ne fonctionne.

    J'ai cru comprendre que ma manière de faire engendrait un appel récursif des fichiers.h, j'ai donc essayé avec des #ifndef sans résultats : l'une des deux forms fait toujours comme si elle ne connaissait pas l'autre.

    Auriez vous une solution ?
    Merci.

  2. #2
    screetch
    Invité(e)
    Par défaut
    il ne faut pas inclure les fichiers .h dans d'autres fichiers .h mais dans les fichiers .cpp a la place.

    from1.cpp inclus form1.h et form2.h
    from2.cpp inclus form1.h et form2.h

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Euh dans ce cas la ça ne marche plus du tout :s

  4. #4
    screetch
    Invité(e)
    Par défaut
    euh dans ce cas la il faut dire au compilateur que les classes from1 et form2 existent avant de les utiliser
    dans form1.h, tu peux ajouter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class form2; //ou le nom exact de la classe de form2
    dans form2.h, tu peux ajouter:
    ca va dire au compilateur dans form1 que form2 existe, et dans form2 que form1 existe.

    Si tu as des erreurs, postent les entièrement; on ne peux pas aider sur des problèmes qui disent "ca marche pas", les messages d'erreur du compilateur (au moins les 2-3 premiers) sont indispensables

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    J'ai l'impression qu'en faisant ça, le compilateur ne considère plus form2 comme une classe de type form.

    Dans la deuxième form ( le #include est dans le .cpp) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    class Maform1;
     
    ...
    // cette partie marche dans mes autres forms
    Maform1 ^form = gcnew Maform1();
    form->Show(this);
    erreur :
    error C3699: '^'*: impossible d'utiliser cette indirection sur le type 'Maform1'
    error C2726: 'gcnew' peut uniquement être utilisé pour créer un objet de type managé
    error C2512: 'Maform1'*: aucun constructeur par défaut approprié disponible

  6. #6
    screetch
    Invité(e)
    Par défaut
    ah c'est du code managé
    peut être __gc class Maform1; ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    '__gc'*: l'utilisation de ce mot clé requiert l'option de ligne de commande /clr:oldSyntax
    Ce doit être une option à spécifier dans les options de compilation du projet.
    Sinon je passe par une troisième classe qui fait le lien des infos entre les deux forms.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                       --> classeInteraction<--
                      |                        |
                      |                        |
                      v                        v
                      form1--------------->form2
    ça reste quand même bizarre, il doit bien y avoir un moyen simple si on veut simplement afficher la form2 à partir de la form1 puis revenir de la form2 à la form1 (ce qui n'est pas mon but mais qui apporterait le même problème).

  8. #8
    screetch
    Invité(e)
    Par défaut
    ton projet semble mal configuré...
    une classe est compilée avec l'option /clr, et tu codes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Maform1 ^form = gcnew Maform1();
    mais le compilateur n'est pas toujours configuré en /clr.
    Tu peux peut-être poster sur le forum CLI.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Salut voila comment perso je fais pour bascule d'une fenetre a l'autre et revenir.
    Voir le dossier j'ai fait un exemple.
    Je n'ais pas inclu le fichier Form2.cpp. Sinon je pense qu'il faut que tu y declare aussi form1.h.

    En gros tu click sa bascule sur form2 et form2 quand tu click pour revenir modifie le text du label de form1.

    Litoon
    Fichiers attachés Fichiers attachés

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Ok je vais regarder ça, merci Litoon !

Discussions similaires

  1. [VB]Relation entre deux form.
    Par dann dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 20/03/2006, 09h07
  2. [VB.NET] Passer une valeur de control entre deux form
    Par TheMacleod dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/12/2005, 11h07
  3. [VB .Net][Forms] Interaction entre deux forms
    Par plasticgoat dans le forum Windows Forms
    Réponses: 7
    Dernier message: 24/08/2005, 13h14
  4. [VB.NET] Perte de focus entre deux form
    Par toniolol dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/07/2005, 08h00

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