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 :

[MFC] Maj de control parent, en direct de la fenêtre fille


Sujet :

MFC

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 23
    Points : 19
    Points
    19
    Par défaut [MFC] Maj de control parent, en direct de la fenêtre fille
    Bonjour à tout et merci d'avance a tous ceux qui pourront m'aider
    Voila, j'ai un petit souci

    J'arrive à acceder aux donnés de ma fênetre parent, mais je ne peux pas modifier certains de ces contrôles ? En clair lorsque je ferme ma fênetre fille j'aimerai que certains champs edit box soit modifié directement dans ma fenêtre parent.
    Comment je dois proceder ?

    De ma fenêtre fille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Cmaclasse *pDlg=( Cmaclasse *)GetParent();  // accès à la boite de dialogue  parent
     
    GetDlgItem(IDC_EDITDATE)->SetWindowText(date); //--> Provoque une erreur
    lorsque je lance ma fonction par l'interface ??

    //IDC_EDITDATE-->fais reference a une Edit box de ma fenêtre parent
    Pense a utiliser la balise de code ,Merci Farscape

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    si le controle en question est bien valide et
    si ça provoque une erreur c'est que le parent obtenu n'est pas celui que tu crois ...
    c'est verifiable avec le debuger ,celui ci affiche la classe de l'objet récuperé.
    si c'est deux boîtes de dialogues il faut passer dans le constructeur de la deuxieme le pointeur sur premiere.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CMyDialog dlg(this); // this c'est la premiere dialogue ou je suis.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    Merci de ta reponse

    C'est ce que j'ai fais pourtant, ma boite parent est effectivement une boite de dialogue. Je comprends vraiment pas.

    Class1.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void Class1::OnBnClickedButtonmodifierdate()
    {
    	Class2 modifierdate(this);
    	modifierdate.DoModal();
    }
    Classe 2.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
     
    void Class2::OnBnClickedButtondateok()
    {
    	Class1 *pDlg=( Class1*)GetParent();  // Maintenant j'ai accès à la boite 
     
     
    	CTime theTime  = pDlg->theTime;//Je recupere bien la bonne valeur
    //je fais differente opperations
    	CString  datetime = theTime.Format( "%A, %d %B , %Y" );// jeudi, avril 14, 2005
    	////
    	MessageBox(datetime);//pour tester,j'ai bien la valeur que je voulais avoir
     
    	pDlg->theTime=theTime;// pour affecter ma variable
    	GetDlgItem(IDC_EDITDATE)->SetWindowText(datetime);
    //Pour l'affichage dans ma boite dialogue parent
     
    	CDialog::OnOK();//Pour quitter la fenetre
    }

  4. #4
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    euh c'est peut être con ce que je vais dire mais ca serait pas ca plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pDlg->GetDlgItem(IDC_EDITDATE)->SetWindowText(datetime);
    Hiko-seijuro

    n'cha - hoyoyo gang

    espace perso : http://hiko-seijuro.developpez.com
    dernier tuto : Introduction à l'éditeur de texte Emacs sous linux
    consulter les faqs : http://www.developpez.com/faq
    PAS DE QUESTIONS TECHNIQUES PAR MP OU MAIL

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    arf c'est sûr ,j'avais pas vu qu'il manquait pDlg-> devant GetDlgItem
    ne pas oublier qu'une methode d'une classe s'applique a l'objet en cours () et donc ici à la fenêtre en cours....
    GetDlgItem ne s'applique donc que sur les controles de la fenetre (l'objet) en cours .

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    Merci bien pour vos réponses
    Je n'avais pas fais attention, ça fonctionne tout est ok

  7. #7
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    résolu c'est avec le bouton en bas pas en modifiant le titre

Discussions similaires

  1. [MFC] updater un control sans les updater tous
    Par zzorglub dans le forum MFC
    Réponses: 4
    Dernier message: 14/02/2006, 17h06
  2. Réponses: 3
    Dernier message: 22/12/2005, 10h43
  3. Problème avec control parent de type TDrawGrid
    Par slylafone dans le forum C++Builder
    Réponses: 2
    Dernier message: 09/11/2005, 17h32
  4. [MFC] redimensionner un controle
    Par benahpets dans le forum MFC
    Réponses: 5
    Dernier message: 01/09/2005, 17h06
  5. [MFC]gestion du controle MaskedEdit
    Par dj_kyl dans le forum MFC
    Réponses: 2
    Dernier message: 27/11/2003, 19h58

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