Pb comunication dial fille-parent

Signaler
Messages postés
138
Date d'inscription
vendredi 10 janvier 2003
Statut
Membre
Dernière intervention
27 janvier 2009
-
Messages postés
65
Date d'inscription
dimanche 27 juillet 2003
Statut
Membre
Dernière intervention
21 avril 2006
-
j'ai un dial parent qui lance un dial NON MODAL fille,
comment recuperer dans la class du dial parent l'evenement du clic sur le bouton OK de la fille ?????????

pas de pb avec un dial modal car on peut faire : if ( dlg.DoMOdal() == IDOK)
{
bla
bla
}

mais avec un dial non-modal je vois pas

ps : peut etre avec sendmessage mais j'ai rien compris.

gege

5 réponses

Messages postés
65
Date d'inscription
dimanche 27 juillet 2003
Statut
Membre
Dernière intervention
21 avril 2006

moi, je programme comme un gros sale et je fais:

la classe fille garde un pointeur du papa et tu fais :

FILLE::OnOk()
{
m_pPapa->JeFaisOk();
}

je pense qu'il y a des solutions plus élégante mais je ne les connais pas.
Toutefois, ce que je fais marche très bien.
Messages postés
138
Date d'inscription
vendredi 10 janvier 2003
Statut
Membre
Dernière intervention
27 janvier 2009

ben figure toi que je pense meme que c'est la solution propre.


mais dans mon, si je fais comme toi, j'ai des erreurs (inclusions multiple ...)





avec GetParents(), on recupere un pointeur sur le dial parent mais comment on fait pour avoir accés au methodes et autres variables de cette class parent ?????

gege
Messages postés
65
Date d'inscription
dimanche 27 juillet 2003
Statut
Membre
Dernière intervention
21 avril 2006

GetParent() te renvoie un type général, il faut donc caster:

Papa* pPapa = dynamic_cast (GetParent());
pPapa->JeFaisOk();

si pPapa n'est pas NULL, alors c'est bon.

Pour les inclusions, il n'y a qu'une technique qui marche bien pour moi

un projet.h qui contient toute les déclarations et les includes générales ... etc

Ce projet.h, tu l'inclues dans TOUS LES HEADERS.

et dans les code.cpp, tu n'inclues code.h et les headers nécessaires.

Comme ça tu n'as plus de undeclared Type
Et si tu as un undefinined Type, tu inclues le .h nécessaire

Si tu as toujours des problèmes, il faut travailler avec les pointeurs au lieu des instances

exemple :

class B
class A
{
B m_b;
}
=> besoin de la déclaration et du cpp car m_b est construit avec le constructeur par défaut donc besoin du constructeur.

Dans ce cas là, tu fais :

class B
class A
{
B* m_b;
}
là, ça marche !!

j'ai écrit vite, dis moi si il y a des choses que j'ai mal écrit

kortin
Messages postés
138
Date d'inscription
vendredi 10 janvier 2003
Statut
Membre
Dernière intervention
27 janvier 2009

j'ai regardé vite fais, mais en tout cas maintenant j'ai accés a mes methodes de la fenetre parent grace a GetParent()

par contre j'ai ca moi : CCongeDlg *toto;
toto = (CCongeDlg *) GetParent();

avec CCongeDlg : dialogue parent

merci.

je vais pouvoir avancer dés demain au boulot.
Messages postés
65
Date d'inscription
dimanche 27 juillet 2003
Statut
Membre
Dernière intervention
21 avril 2006

ceci :
CCongeDlg *toto;toto (CCongeDlg *) GetParent();> vieux cast en C

équivaut à :
CCongeDlg * totodynamic_cast<CCongeDlg *> (GetParent());> nouveau cast C++