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 :

Dialog parent getParent


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 252
    Par défaut Dialog parent getParent
    Bonjour

    j'ai une classe Dlg qui hérite de CDialog

    et un autre Dialog (Dlg2), que je souhaite lancer en tant que fils de Dlg
    en faisant CDialog Dlg2(this); depuis Dlg
    dans le code de Dlg2 je pensais que je pourrai utiliser les fonctions publiques de Dlg , mais si je veux caster GetParent() en Dlg forcement le compilateur est pas content
    cannot convert from 'class CDialog *' to 'class CDlg *'

    est ce qu'il faut faire hériter Dlg2 de Dlg carrément
    class CDlg2: public CDlg au lieu de class CDlg2: public CDialog
    je suis pas sur que ce soit une bonne idée

    la seule chose que je veux c'est pouvoir appeler un fonction de Dlg depuis Dlg2

    (et si possible envoyer des evenement de Dlg vers Dlg2 aussi mais c'est un autre probleme)

    en gros à quoi sert vraiment de déclarer un CDialog mondialog(this); au lieu de mondialog();

    merci beaucoup

  2. #2
    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
    Bonjour,

    Tes explications sont un peu confuses. Mais si je les ai bien comprises quand même, je ne vois pas pourquoi ce que tu veux faire ne serait pas possible. Comment fais-tu ton cast ?

  3. #3
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Soit tu fais un cast du retour de GetParent() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((CDlg *) GetParent())->Une_fonction_de_Dlg();
    Soit tu passes pas un système de message dont l'envoie se fera à l'aide de PostMessage, mais tu devras prévoir ce que fait Dlg à réception du message (cf. FAQ (je suppose )).

  4. #4
    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 TheGzD Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((CDlg *) GetParent())->Une_fonction_de_Dlg();
    En C++ on peut maintenant éviter le cast C...
    Si tu es sûr de tomber sur une instance de CDlg :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static_cast<CDlg*> (GetParent())->Une_fonction_de_Dlg();
    Si tu n'en es pas sûr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CDlg *pDlg = dynamic_cast<CDlg*> (GetParent());
     
    if (pDlg)
    	pDlg->Une_fonction_de_Dlg();

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 252
    Par défaut
    merci bien

    les static cast conviennt tres bien , c'est que j'avais oublié de mettre un #include "Dlg.h" dans Dlg2.cpp

    mais sinon pour inversement depuis Dlg j'utilise une fonction de Dlg2, il faut que je crée Dlg2 en non-modal et que je garde un pointeur vers lui dans Dlg?

  6. #6
    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
    Oui.

Discussions similaires

  1. [Dialog] Définir onCreateDialog objet parent
    Par windmastr26 dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 13/04/2012, 10h03
  2. getParent() ne retourne pas le bon parent avec JMenuItem
    Par kesiahlex dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 20/04/2006, 15h19
  3. Réponses: 4
    Dernier message: 22/12/2005, 17h05
  4. Pop-up d'une dialog box a partir d'un bouton
    Par bobbyjack dans le forum MFC
    Réponses: 21
    Dernier message: 13/09/2005, 15h32
  5. Quoi ?! Common Dialog fait crasher DirectDraw ?
    Par Magus (Dave) dans le forum DirectX
    Réponses: 4
    Dernier message: 21/10/2002, 19h01

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