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

MFC Discussion :

Problème de variable entre 2boites de dialogue


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Par défaut Problème de variable entre 2boites de dialogue
    Bonjour à tous!
    Voilà mon problème est le suivant, j'ai une dialogue principale qui, lorsque que j'appui sur un bouton appel une boite non modale à partir du code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     CAOI *pDlg;	
    	pDlg = new CAOI(this);					
    	pDlg->Create(CAOI ::IDD,this);				pDlg->ShowWindow(SW_SHOW);
    J'ai créer une variable dans la dialogue principale pour qu'elle soit modifiée dans la boite non modale.
    Je peux donc la modifier dans la dialogue non modale mais lorsque je veux la lire dans la boite principale, la modification n'est pas prise en compte!! Je ne comprend pas pourquoi!
    Si quelqu'un pouvait m'éclairer se serait super sympa! merci à vous!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Par défaut
    Salut, si j'ai bien compris ce que tu veux, voici ce que je te propose.

    Tu créé une nouvelle variable var dans la classe de ta dialog non modale. Tu passe en paramètre de ton constructeur cette variable.

    Donc quand tu créeras ta boite, tu auras pDlg = new CAOI(this, ta_variable);

    Et enfin, quand tu as fermé ta boite de dialogue, tu peux récupérer la variable, par pDlg->var;

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Par défaut
    Tout d'abord merci de t'intérrésser à mon cas! Mais la solution que tu m'as proposé ne marche pas. (enfin je ne suis pas tout à fais sur de bien l'utiliser!)
    Mais peut etre y a t'il une solution plus simple à mon problème?
    Parce que le soucis est que lorsque j'apuis sur le bouton qui ouvre ma dialog non modale, alors que celle ci est déjà ouverte, il m'en ouvre une 2ème! Et ce jusqu'à "l'infini"!

    Donc je voudrais seulement detecter si la dialog est ouverte ou non et placer donc une fonction if qui interdirait l'ouverture multiple de cette dialog!(Par contre si je la ferme, je veux pouvoir la réouvrir plus tard!)

    Merci d'avance!

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Par défaut
    Je n'ai pas trop l'habitude de travailler avec des non modales, cependant, essaye de déclarer un bool dans le .h, que tu initialisera à false.

    Ensuite, qund tu appelle ta fenêtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(!ton_bool)
    {
       ton_bool=true;
       CAOI *pDlg; 
       //etc...
    }
    Et le remettre à false dès que la fenêtre est fermée (appui sur OK, ou sur ANNULER ...)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Par défaut
    Oui voilà c'est éxactement ce que j'ai fait, mais lorsque je modifie la variable "bool" à la fermeture de la fenêtre non modale (vérifié par une MessageBox), la modification n'est pas prise en compte dans la dialog principale (Vérifié aussi par une MessageBox!)
    Je sais pas trop pourquoi mais je me demande si ce n'est pas à cause du fait que la fenetre non modale est crée à partir d'un pointeur?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Par défaut
    Ce que je t'ai dit marche très bien avec les modales, pointeur ou pas, mais je n'ai effectivement jamais essayé avec des non modales.
    As-tu essayé une allocation statique par hasard ?
    Sinon, je ne vois pas ... Tu as bien mis la variable en public dans la classe de la dialog ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Par défaut
    Avec les modales c'est tres facile mais pour les non modales c'est la galère!!
    Hélas je n'ai pas le choix, je dois 'utiliser une non modale.
    Sinon je ne sais pas ce que sait qu'une allocation static, il faut dire aussi que ça fait seulement 1semaine et demi que j'utilise le C++, avant je n'avais fais que très peu de programmation, en C et assembleur! La notion "programmation objet" est toute fraiche pour moi...
    Enfin merci de m'avoir aider tout de même!

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Par défaut
    L'allocation statice, c'est sans le new.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CAOI pDlg();	
    pDlg.Create(CAOI ::IDD,this);
    Sinon, je viens de tester ma première proposition, et chez moi ca marche, ma variable est bien modifiée.
    Peux-tu me montrer plus exactement ce que tu as fait ?

    Par contre, l'allocation statique ne marche pas pour la non modale, c'est juste un exemple !

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Par défaut
    Bonjour, désolé de n'avoir pas donné de nouvelle mais le programme à totalement changer du coup, plus de boite non modale, que des modales!
    Donc le problème n'éxiste plus malgré que ce que tu m'as proposé ne marchait pas :S
    En tout cas merci pour tout!

  10. #10
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Juste pour essayer de résoudre le problème qui n'est plus , si tu passes ta variable en paramètre de ta non-modale, c'est normal qu'à la fin ses éventuelles modifications n'ont pas été prises en compte car, à la création de la fenêtre non-modale, cette variable est dupliquée. On a alors deux variable identiques, une pour la fenêtre de départ et une pour la fenêtre qui vient d'être créée. Ainsi, à la fermeture de la non modale, même si sa variable a été modifiée au cours de son existence, celle-ci est détruite en même temps que la fenêtre elle même. La solution serait de ne pas passer la variable en paramètre, mais un pointeur sur la variable. Les deux fenêtres travailleraient alors sur la même zone mémoire, et non plus sur deux zones différentes.

    PS: Si le problème a été résolu, pensez à

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/11/2009, 17h09
  2. Problème de dépendance entre les variables
    Par Lotendan dans le forum Général Python
    Réponses: 6
    Dernier message: 26/08/2008, 10h49
  3. Problème de transfert de variable entre Flash et PHP
    Par megartaud dans le forum Intégration
    Réponses: 3
    Dernier message: 06/04/2008, 01h25
  4. Réponses: 3
    Dernier message: 07/03/2007, 11h10
  5. Problème d'appels d'une variable entre fonctions
    Par julien.nasser dans le forum MFC
    Réponses: 12
    Dernier message: 26/04/2006, 09h23

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