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] Rafraîchir une vue sur la fermeture d’un boite de dial


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Inscrit en
    septembre 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : septembre 2005
    Messages : 47
    Points : 25
    Points
    25
    Par défaut [MFC] Rafraîchir une vue sur la fermeture d’un boite de dial
    Re-bonjour,

    Je sais que cette question a déjà été posée mais ça fait un moment que je cherche et que j'essai pas mal de truc … en vain

    Je suis dans la configuration MDI plusieurs vues différentes pour un seul document.
    Je saisis des données grâce à des boites de dialogue, et je visualise le résultat sur des CFormView.
    Je voudrai rafraîchir les champs de certaines de mes fenêtres quand je ferme mes boites de dialogue. Le problème est que j’ai essayé les UpdateData, UpdateAllView …. rien n’y fait, mes vues ne se rafraîchissent pas.
    Par contre, si je ferme les fenêtres en question et que je les ouvre à nouveau, j’ai bien les nouvelles valeurs.
    Est-ce quelqu’un peut m’expliquer, en détails si possible, la procédure à suivre ?

    Marie (tjrs).

  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 330
    Points
    17 330
    Par défaut
    salut,
    si ton probleme c'est de mettre a jour la view d'origine a la sortie de la boite de dialogue ,ça effectivement ete traité plusieurs fois.
    voir cet exemple SDI (le principe est le meme).
    http://farscape.developpez.com/Sampl...UpdateData.zip

  3. #3
    Nouveau membre du Club
    Inscrit en
    septembre 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : septembre 2005
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Si tu appel 'View d'origine', la vue qui appelle l'ouverture de la boite de dialogue ... ça n'est pas celle là mais une autre.

  4. #4
    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 330
    Points
    17 330
    Par défaut
    si les vues font parties du meme document ,ce n'est pas tres compliqué .
    a la sortie de la boite de dialogue il faut recuperer le pointeur sur la vue concernée.
    mettre a jour ses variables et faire un UpdateData sur cette vue.
    en procedant comme dans mon exemple mais avec le pointeur de vue en plus.
    pour obtenir le pointeur sur la view il suffit de connaitre sa classe d'iterer sur les fenetres du document.
    adaptation de mon exemple .
    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
     
    void CTestUpdateDataView::OnButtonSelNom() 
    {
       // TODO: Add your control notification handler code here
        CDglSelNom Dlg;
        POSITION pos=GetDocument()->GetFirstViewPosition();
       CView *pView;
       do
       {
              pView=GetDocument()->GetNextView(pos);
             if(pView->IsKindof(RUNTIME_CLASS(CMyFormView)))
            {
                  CMyFormView *pForm=static_cast< CMyFormView *>&#40;pView&#41;;
                   pForm->UpdateData&#40;TRUE&#41;; // mise a jour des données de la view .
                   Dlg.m_strSelName=pForm->m_StrNom; // chargement de la zone avant appel dialogue.
                   Dlg.m_StrDivers=pForm->m_StrDivers;
                     if&#40;Dlg.DoModal&#40;&#41;==IDOK&#41;
                    &#123;
                       pForm->m_StrNom=Dlg.m_strSelName;  // recuperation des infos de la dialogue.
                        pForm->m_StrDivers=Dlg.m_StrDivers;
                        pForm-> UpdateData&#40;FALSE&#41;;// mise a jour des controles de la view.
                   &#125;    
                  break;
            &#125;
       &#125;
       while&#40;pView&#41;;

  5. #5
    Nouveau membre du Club
    Inscrit en
    septembre 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : septembre 2005
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Ca fonctionne, merci.

    Marie.

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

Discussions similaires

  1. "Rafraîchir" une vue
    Par ben53 dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 09/07/2009, 13h19
  2. [MFC] Afficher une CWnd sur un 2ème moniteur
    Par Philippe320 dans le forum MFC
    Réponses: 11
    Dernier message: 30/09/2006, 22h58
  3. Réponses: 1
    Dernier message: 15/09/2006, 14h04
  4. [MFC] Splitter une vue en N vue
    Par March' dans le forum MFC
    Réponses: 1
    Dernier message: 05/10/2005, 12h51

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