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 :

Héritage d'une classe MFC et d'une classe non MFC


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2002
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Héritage d'une classe MFC et d'une classe non MFC
    Bonjour à tous,

    Je bûche sur un problème depuis maintenant 2 jours et je n'ai toujours pas de solution en vue alors je me risque peut être quelqu'un à déjà rencontrer ce genre de problème.

    voici donc:

    J'ai une Classe A (NON MFC)

    Une Classe B
    et une Classe C

    la Classe B hérite de A et de CListCtrl
    La Classe C Hérite de A et de CTreeCtrl

    Organisé de cette façon je compile sans problème mais l'exécution plante à tout coup.

    par contre si je mets le contenu de BEGIN_MESSAGE_MAP des Classe B et C en commentaire alors là il n'y a plus de plantage mais bon j'en ai besoin alors ce n'est pas la solution.

    Autre piste ...si je fais hérité la classe CListCtrl à la Classe A au lieu de la B
    eh bien cela fonctionne mais bien entendu pas question d'ajouter CTreeCtrl à la Classe A également donc encore une fois je dois mettre de côté.

    Quelqu'un à une idée ou une piste de solution...

    Je crois que le problème viens de la gestion du MESSAGE_MAP() mais je n'arrive pas mettre le doigt dessus.

    C'est bizarre pcq j'ai fait ce même genre d'organisation avec des CEdit, CRadioButton etc.... et j'ai j'amais eu de problème.

    Merci pour vos suggestions.

    Etienne

  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,
    l'héritage multiple entre une classe MFC et non MFC ne devrait pas causer de probléme.
    j'ai moi même ce cas de figure dans mes projets et ça fonctionne correctement.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2002
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci d'avoir répondu si rapidement,

    c'est exactement ça mon problème... moi aussi j'ai déjà utilisé ce genre de structure sans jamais aucun problème...

    la question que je me pose c'est pourquoi si je donne la structure suivante

    CListCtrl
    ClassA
    ClassB

    Tout fonctionne à merveille

    Mais si c'est
    ClassA, CListCtrl
    ClassB

    alors là plus rien ne fonctionne

  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 323
    Points
    17 323
    Par défaut
    tu peux préciser en déclaration C++ ce que représente :
    ClassA, CListCtrl
    ClassB
    .

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2002
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    class CBDTable
    {
    ...
    }


    class CDataListCtrl : public CListCtrl, public CBDTable
    {
    DECLARE_DYNAMIC(CDataList )
    ...
    }

    class CDataTreeCtrl : public CTreeCtrl, public CBDTable
    {
    DECLARE_DYNAMIC(CDataTreeCtrl)
    ...
    }

    Je ne sais pas si ça peut aider mais lorsque je manipule les objets je le fait régulièrement avec un poiteur de type CBDTable. (la classe de base) que je cast au besoin pour préciser le type.

    Ex:

    CBDtable *ptr = this->GetDataStruct().

    ((CDataListCtrl*)ptr)->propriété_quelconque;


    Encore merci pour votre aide..

  6. #6
    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,
    normal ..., essaye plutôt d'utiliser dynamic_cast.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dynamic_cast<CDataListCtrl*>(ptr)->propriété_quelconque

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2002
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci pour votre aide .. j'ai changé tout les cast dans mon code..
    pour dynamic_cast..

    Malheureusement cela n'a pas réglé mon problème

    j'ai deux warning à la complilation peut être cela pourrait vous aidez

    warning LNK4221: no public symbols found; archive member will be inaccessible stdafx.obj


    warning C4407: cast between different pointer to member representations, compiler may generate incorrect code

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2002
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    J'ai solutionné le problème..
    la piste de dynamic_cast m'a amener vers la solution ..
    Un seul conseil (éviter les void * comme argument de fonction.. ça peut faire des chose pas trop comprenable parfois)


    Merci de votre aide.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/01/2010, 13h46
  2. Réponses: 1
    Dernier message: 11/02/2009, 06h33
  3. [MFC] Insertion d'une chaine de caractère dans une BD
    Par julien.nasser dans le forum MFC
    Réponses: 2
    Dernier message: 20/04/2006, 15h19
  4. Réponses: 7
    Dernier message: 10/10/2005, 14h31
  5. Réponses: 7
    Dernier message: 09/08/2005, 13h47

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