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] communication entre onglets d'une fenêtre


Sujet :

MFC

  1. #1
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut [MFC] communication entre onglets d'une fenêtre
    slt,

    j'ai un soucis. j'ai une boîte de dialogue avec 3 onglets.
    sur chaque onglet on a des ListCtrl, ListBox, CEdit et autres CButton...
    voilà mon soucis (je ne m'en étais pas préoccupé avant, andouille comme je suis ):
    il faudrait que chaque onglet puisse écrire dans les ListBox et autres des autres onglets.
    une première solution (pourrie je trouve) pourrais consister à définir les éléments d'affichage en global?

    donc ma question c'est : comment faire communiquer proporement les différents onglets pour pouvoir afficher des choses dans l'un quand on agit dans l'autre?

  2. #2
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    j'ai maté la FAQ (Comment faire pour accéder aux contrôles d’une dialogue à partir d’une autre dialogue ?). dans mon cas, les 3 onglets sont créés à l'exéc du prog, yan a pas un parent de l'autre.

    ji pitêtre une ID pour résoudre mon problème, mais je ne sais pas comment la mettre en oeuvre. explication :

    j'ai un objet globale "GLO" qui contient les données à afficher (quel que soit l'onglet). il faudrait que lorsque je clic sur un onglet (focus?) le prog rafraichisse l'affichage de cet onglet (reset de tous les affichages et réécriture à partir du GLO).

    comment que c'est que je peux faire ça? c'est une bonne solution? qui dit mieux? les jeux sont fait, rien ne va plus

    merci du coup de main

  3. #3
    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,
    mais le parent de la dialog c'est l'onglet .
    apres selectionner l'onglet et recuperer le pointeur de la fenetre:
    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
     
    TCITEM item;
    CWnd* pWnd;
    item.mask = TCIF_PARAM;
     
    TabCtrl.GetItem(TabCtrl.GetCurSel(), &item);
    pWnd = reinterpret_cast<CWnd*> (item.lParam);
    ASSERT_VALID(pWnd);
    pWnd->ShowWindow(SW_HIDE);
     
    TabCtrl.SetCurSel(iIndex);
    TabCtrl.GetItem(iIndex, &item);
    pWnd = reinterpret_cast<CWnd*> (item.lParam);
    ASSERT_VALID(pWnd);
    pWnd->ShowWindow(SW_SHOW);

  4. #4
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    le soucis c'est que j'ai 3 dialog, chacune dans un onglet.
    2 d'entre elles comportent un boutons OPEN FILE.

    1er onglet : si j'ouvre un fichier, il est lu (données stockées dans GLO) et des données sont affichées ds la dialog (no problemo)

    2è onglet : si j'ouvre un fichier, il est lu (données stockées dans GLO) et des données sont affichées ds la dialog (no problemo) + des données doivent être affichées dans le 1er onglet (problemo)

    je coince. je ne sais pas comment faire pour :
    1) soit la dialog 2 modifie l'affichage de la dialog 1
    2) soit lorsque je clik sur l'onglet 1 (le focus sur la dialog1), il y a rafraissimement de tous les affichages

  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
    salut
    Ce qui est pas mal au niveau de la classe parent CTabCtrl c’est très judicieux au moment de la création des différentes dialog de garder dans un tableau la liste des Dialogs.
    Apres au niveau des dialogs on récupère le parent CtabCtrl on accède donc au tableau qui contient la liste des dialogs . et la tu fais ton boulot
    No problemo non ?

  6. #6
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    oué au début, j'avais pas prévu le coup des communicactions entre dialog (j'ai débuté VC++ en avril), jvé voir pour cette histoire de parent. c triste de laisser mes dialog orphelines

    je vais voir ça demain. là j'en ai ras le bol du boulot, jvé rentrer à la maison

    merci

  7. #7
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    on accède au parent d'une Dialog par l'attribut
    :

    peux-tu me dire si ma démarche est la bonne?

    Les dialog des onglets --> classes CTab1, CTab2 et CTab3 (dériv dialog)
    le TabCtrl --> classe CMyTabCtrl (dériv CTabCtrl)

    accéder à une ListBox d'un CTab1 à partir d'un CTab2 :
    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
     
    //dans la classe CTab2, un truc du genre
    CListBox * maListBox;
    CTab1 * dlg;
    CMyTabCtrl * pere;
     
    // je récupère le pointeur sur le CMyTabCtrl parent de mes dialog
    // (pas indispensable, mais ça facilite la lecture puisque je dois caster en CMyTabCtrl)
    pere = (CMyCtrlTab *)m_pParentWnd;
     
    // je récupère le pointeur de la fenêtre CTab1 qui m'intéresse
    // (getTabPages(index) relatif à attribut CDialog m_tabPages[3] du CMyTabCtrl qui stocke les 3 dialog de type CTab1, 2 et 3)
    dlg   = (CTab1 *)(pere->getTabPages(0)); // je caste en CTab1
     
    // je récupère le pointeur de la liste box du CTab1 que je veux modifier
    maListBox = dlg->getListBox(); //
     
    // je peux faire ma modif dans la list box du CTab1 à partir du CTab2
    maListBox->ResetContent();
    qu'est-ce t'en pense :

  8. #8
    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, dans l'idée c'est ça .
    le parent peut etre obtenu par GetParent().
    Ps: tu m'a fais peur avec ta tetine

  9. #9
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Citation Envoyé par farscape
    Ps: tu m'a fais peur avec ta tetine


    yeah! sinon ça marche nickel.
    par contre je ne comprend pas un truc.
    ça marche avec GetParent(), mais pas avec m_pParentWnd.

  10. #10
    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
    re,
    elle sort d'ou cette variable ?
    a mon avis mauvaise affectation à la creation de la dialogue.

  11. #11
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    CWnd * m_pParentWnd

    c'est un attribut de la classe Dialog. je pensais que ct un pointeur sur le parent.

  12. #12
    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
    tout depend comment tu as crée tes dialogues . tu as fournis le parent dans le constructeur ?

  13. #13
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    no comment

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

Discussions similaires

  1. [MFC] Communication entre une CDialog et une CFormview
    Par julien.nasser dans le forum MFC
    Réponses: 8
    Dernier message: 06/07/2006, 14h32
  2. [MFC] Communication entre CDialog
    Par Bmagic dans le forum MFC
    Réponses: 2
    Dernier message: 27/06/2006, 17h26
  3. Réponses: 3
    Dernier message: 22/11/2005, 11h12
  4. Réponses: 2
    Dernier message: 08/08/2005, 21h30
  5. Réponses: 6
    Dernier message: 28/02/2004, 09h19

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