Pb comunication dial fille-parent

gege1024 Messages postés 138 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 27 janvier 2009 - 14 déc. 2005 à 16:02
kortin Messages postés 65 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 21 avril 2006 - 15 déc. 2005 à 10:02
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

kortin Messages postés 65 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 21 avril 2006
14 déc. 2005 à 17:40
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.
0
gege1024 Messages postés 138 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 27 janvier 2009
14 déc. 2005 à 18:14
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
0
kortin Messages postés 65 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 21 avril 2006
14 déc. 2005 à 18:31
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
0
gege1024 Messages postés 138 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 27 janvier 2009
14 déc. 2005 à 19:45
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kortin Messages postés 65 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 21 avril 2006
15 déc. 2005 à 10:02
ceci :
CCongeDlg *toto;toto (CCongeDlg *) GetParent();> vieux cast en C

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