yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 2016
-
16 nov. 2006 à 15:35
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 2016
-
17 nov. 2006 à 14:25
Salut, avec MFC :
J'ai une vue parent et un dialog non modal enfant.
J'essaye d'appeler une méthode du parent depuis le dialog enfant.
// MyModelessDialog.h
class MyModelessDialog : public CDialog
{
// Le constructeur prend CView* pParent
// blabla
}
// MyView.h
#include "MyModelessDialog.h"
class MyView : public CFormView
{
// blabla
void uneFonction();
MyModelessDialog* m_pDialog;
}
// MyView.cpp
Dans OnInitialUpdate je crée le dialog enfant.
Tout va bien.
// Et dans le MyModelessDialog.cpp,
sur un click boutton par exemple :
Impossible de caster le parent de CView* en MyView*
pour pouvoir appeler MyView::uneFonction();
Je pense que c'est un problème d'include mais avez vous
une idée ?
Merci pour vos réponses.
cs_louis14
Messages postés793Date d'inscriptionmardi 8 juillet 2003StatutMembreDernière intervention10 février 20218 17 nov. 2006 à 08:53
Dans ton .cpp il faut inclure ton .h de la view, si c'est un Problème de compilation. L'autre solution est d'envoyer un message au parent comme quoi tu as fait une action dans ta dialogBox
louis14
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 17 nov. 2006 à 13:33
Le problème est que si je met
#include "MyView.h" dans le cpp du dialog
j'ai des erreurs de compilation du aux collisions d'includes, donc le compilateur ne reconnait pas la classe MyView mais seulement CView.
J'imagine que ça vient du système des headers précompilés.
Je vais essayer les messages, a voir...
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 17 nov. 2006 à 14:25
J'ai réussi à compiler, je ne le savait pas mais l'ordre des include est important. En effet il fallait que je mette l'include "MyView.h" avant l'include "MyModelessDialog.h" dans le cpp du dialog, puisque MyView.h inclue lui-même MyModelessDialog.h.
Ouf, c'était plus ou moins logique finalement.