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 :

CXTabCtrl acc�s a la dialogue parent


Sujet :

MFC

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par d�faut CXTabCtrl acc�s a la dialogue parent
    Bonjour � tous !

    Je reviens � la charge avec le CXTabCtrl!
    J'expose mon Probl�me:

    J'ai une dialogue principale qui contient un tabcontrol de type CXTabcontrol.
    Dans ce tab control il 'y 4 dialogues (4 onglets) chaque dialogue a sa propre classe.
    Je souhaiterais � partir de ces dialogues (onglets) utiliser des fonctions de la dialogue principale (celle qui contient le TabControl)!!
    Est ce possible et si oui, comment puis je proc�der???

    Merci d'avance de votre aide
    Kemanke

  2. #2
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par d�faut
    Personne pour m'aider?
    Suis je pas clair, dois je reformuler ma question?

    Merci d'avance
    Kemanke

  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
    Par d�faut
    j'ai d�j� repondu x fois � ce probl�me ...
    il faut utiliser GetParent().
    GetParent() dans un onglet donne le pointeur sur le tabCtrl.
    le parent du tabctrl c'est la dialogue.
    donc deux GetParent() successif donne le pointeur sur la dialogue.
    on peut aussi stocker dans chaque onglet un pointeur sur la dialogue m�re au moment du create de l'onglet .

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par d�faut
    Je sais que tu as d�j� r�pondu x fois � cette question Farscape et je m'en excuses mais lorsque je fais dans mon onglet:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    this->GetParent()->GetParent()
    donc deux GeParent() Successifs je n'arrive pas � atteindre les fonction de la boite de dialogue contenant mon tabcontrol!

    Alors ai je bien compris ce que tu m'as expliqu� ou alors pas du tout?

    Merci beaucoup

  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
    Par d�faut
    il faut caster le retour sur le nom de la classe de la dialogue ....

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par d�faut
    Je ne suis pas sur de comprendre???

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    CAppDlg* pApp = (CAppDlg *)this->GetParent()->GetParent();
    dans mon dialogue onglet?

  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
    Par d�faut
    si c'est ta classe dialogue oui mais en prenant un peu plus de precautions...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    CXTabCtrl *pTab=static_cast<CXTabCtrl *>(this->GetParent());
    CAppDlg* pApp = NULL;
    if(pTab) pApp = static_cast<CAppDlg *>(pTab->GetParent());

  8. #8
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par d�faut
    le Probl�me est que si j'inclus le header de mon dialogue onglet dans dans mon dialogue principale (vu qu'il faut bien cr�er l'onglet en question) et ensuite si j'inclus le header de mon dialogue principale dans mon dialogue onglet, il y a des erreurs et ce qui compr�hensible!

    Tu as une id�e?

    Merci du temps que tu me consacres!
    Kemanke

  9. #9
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par d�faut
    Sinon tu as dit:

    on peut aussi stocker dans chaque onglet un pointeur sur la dialogue m�re au moment du create de l'onglet .
    comment puis je faire cela? peut etre, est ce la solution?

    Merci encore.

  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
    Par d�faut
    Citation Envoy� par Kemanke
    le Probl�me est que si j'inclus le header de mon dialogue onglet dans dans mon dialogue principale (vu qu'il faut bien cr�er l'onglet en question) et ensuite si j'inclus le header de mon dialogue principale dans mon dialogue onglet, il y a des erreurs et ce qui compr�hensible!

    Tu as une id�e?

    Merci du temps que tu me consacres!
    Kemanke
    �a ne doit pas causer de probl�mes ,il faut juste faire attention � l'ordre des includes.
    il faut mettre l'include de la boite de dialogue et de ses d�pendances dans le source des autres onglets .

  11. #11
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par d�faut
    Si �a pose probl�me:

    J'ai ma dialogue Principale: CAppDlg (AppDlg.h et .cpp)
    J'ai ma dialogue Onglet: CBase (Base.h et .cpp)

    Si dans AppDlg.h je met #include "Base.h"
    et Si je met dans Base.h #include "AppDlg.h"

    J'ai une erreur � la compilation...
    Peut �tre que maintenant j'ai omis quelque chose:

    Dans AppDlg.h

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #pragma once
    #include "afxwin.h"
    #include "afxcmn.h"
    #include "TabControl\XTabCtrl.h"
    #include "Base.h"
    #include "Divers\Picture.h"
     
    class CAppDlg : public CTplDlgColor<CDialog>
    {
    //____________________________
    // Données membres de classe
    public:
    	CAppDlg(CWnd* pParent = NULL);	// constructeur standard
     
    	enum { IDD = IDD_APPSPEEDTRUCK_DIALOG };
     
    	//Controls du dialogue
    	CXTabCtrl m_tabctrl;
     
    	//
    	CFont m_fontTabCtrl;
    	CImageList m_imagelistTab;
    	CPicture m_picture;
     
     
    	CBase* m_pBase;
     
    //____________________________
    // Fonctions membres de classe
    protected:
     
    	virtual void DoDataExchange(CDataExchange* pDX);	// prise en charge de DDX/DDV
    	virtual BOOL OnInitDialog();
     
    	//Fonctions générées de la table des messages
    	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    	afx_msg void OnPaint();
    	afx_msg HCURSOR OnQueryDragIcon();
    	virtual void OnOK();
     
    	DECLARE_MESSAGE_MAP()
     
    public:
     
    	afx_msg void OnDestroy();
     
    	afx_msg void OnTcnSelchangeTab(NMHDR *pNMHDR, LRESULT *pResult);
     
    };
    et ensuite Base.h:

    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
    27
    28
    29
    #pragma once
    #include "AppDlg.h"
    #include "TabControl\XTabCtrl.h"
     
    class CBase : public CTplDlgColor<CDialog>
    {
    	//DECLARE_DYNAMIC(CBase)
     
    public:
    	CBase(CWnd* pParent = NULL);   // constructeur standard
    	virtual ~CBase();
     
    // Données de boîte de dialogue
    	enum { IDD = IDD_BASE };
    	CXTabCtrl* m_pTab;
     
    protected:
    	virtual void DoDataExchange(CDataExchange* pDX);    // Prise en charge de DDX/DDV
    	virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
     
    	DECLARE_MESSAGE_MAP()
    public:
    	virtual BOOL OnInitDialog();
    	virtual void OnDestroy();
     
    	virtual void OnOK();
    	virtual void OnCancel();
     
    };
    Merci d'avance
    Kemanke

  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
    Par d�faut
    vu comme �a c'est s�r que �a va causer probl�mes ...
    vire :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    #include "afxwin.h"
    #include "afxcmn.h"
    #include "TabControl\XTabCtrl.h"
    

    de
    AppDlg.h et met les lignes dans stdafx.h ,tu ne devrais pas avoir
    de afxwin.h ou afxcmn.h dans un include d'application..
    dans base.h tu ne devrais pas avoir besoin de :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    #include "AppDlg.h"
    #include "TabControl\XTabCtrl.h"
    par contre tu dois rajouter dans base.cpp


    Note :par rapport a ton pb precedent au cas ou tu ne l'aurais pas remarqu� dans mon exemple et dans ta classe onglet un pointeur sur le tabcontrol est initialis� .
    pour retrouver la dialogue il suffit de faire dans l'onglet:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    CAppDlg *pApp=static_cast<CAppDlg *>(m_pTab->GetParent());

  13. #13
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par d�faut
    J'ai fait ce que tu m'as indiqu� de faire:


    AppDlg.h
    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
    #pragma once
    #include "Base.h"
     
     
    class CAppDlg : public CTplDlgColor<CDialog>
    {
    //____________________________
    // Données membres de classe
    public:
    	CAppDlg(CWnd* pParent = NULL);	// constructeur standard
     
    	enum { IDD = IDD_APPSPEEDTRUCK_DIALOG };
     
    	//Controls du dialogue
    	CXTabCtrl m_tabctrl;
     
    	//Aggrégation
    	CBase* m_pBase;
    //____________________________
    // Fonctions membres de classe
    ...
     
    	DECLARE_MESSAGE_MAP()
    ...
     
    };
    et dans Base.h:

    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
    #pragma once
    #include "AppDlg.h"
     
    class CBase : public CTplDlgColor<CDialog>
    {
    	//DECLARE_DYNAMIC(CBase)
     
    public:
    	CBase(CWnd* pParent = NULL);   // constructeur standard
    	virtual ~CBase();
     
    // Données de boîte de dialogue
    	enum { IDD = IDD_BASE };
    	CXTabCtrl* m_pTab;
     
    ...
     
    	DECLARE_MESSAGE_MAP()
    ...
    };
    et J'ai comme erreur:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Erreur	1	error C2143: erreur de syntaxe*: absence de ';' avant '*'
    Cette erreur pointe sur CBase* m_pBase; dans AppDlg.h

    Merci de ton aide

  14. #14
    Membre chevronn�
    Avatar de PetitPapaNo�l
    D�veloppeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par d�faut
    Citation Envoy� par farscape
    met les lignes dans stdafx.h ,tu ne devrais pas avoir
    de afxwin.h ou afxcmn.h dans un include d'application.
    Farscape, pourquoi faut-il ne pas inclure afxwin.h et afxcmn.h dans une appli ?

  15. #15
    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
    Par d�faut
    parce que habituellement dans une applie MFC c'est dans stdafx.h que ces includes sont g�n�r�s ,il est alors inutile de se g�n�rer des temps de compilation plus long et des probl�mes en les ajoutant dans d'autres .h de l'application...

  16. #16
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par d�faut
    Toujours pas d'explication � mon probl�me alors ?

  17. #17
    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
    Par d�faut
    tu n'as pas fait ce que j'ai dis ...
    tu as toujours un #include "AppDlg.h" qui traine dans base.h
    Citation Envoy� par farscape
    dans base.h tu ne devrais pas avoir besoin de :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    #include "AppDlg.h"
    #include "TabControl\XTabCtrl.h"
    par contre tu dois rajouter dans base.cpp


  18. #18
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par d�faut
    Autant pour moi Farscape, j'avais mal lu!!!
    Je vais essayer tout cela.

    Je te remercie de tout le tps que tu as pass� � r�pondre � mes questions!!!

    Merci beaucoup
    Kemanke

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Acc�s aux variables du pom parent
    Par DanielW33 dans le forum Maven
    R�ponses: 14
    Dernier message: 30/12/2011, 16h23
  2. Interdire l'acc�s au dossier parent
    Par Maurice Fallou dans le forum Administration
    R�ponses: 5
    Dernier message: 26/02/2009, 13h33
  3. R�ponses: 6
    Dernier message: 04/03/2007, 20h29
  4. [Syst�me] Acc�s methode parent
    Par vince1415 dans le forum Langage
    R�ponses: 8
    Dernier message: 21/06/2006, 10h24
  5. acces � la Bd situee dans le dossier parent
    Par trialrofr dans le forum ASP
    R�ponses: 4
    Dernier message: 04/01/2005, 17h37

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