Re : Passage de variables -MFC

marcel6566 Messages postés 25 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 17 octobre 2006 - 14 nov. 2003 à 21:44
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 14 nov. 2003 à 23:43
Bonjour,

J'ai deux boites de dialogues liées à deux classes.
Je souhaiterais utiliser le contenu d'une variable obtenue dans la première boite de dialogue vers la seconde.

Pouvez-vous m'indiquer mon erreur ? Merci

Voici les deux classes complètes.

void CEleves::OnCloseupCombo1()
{
CString texte;
m_numchap = m_combo1.GetCurSel();
m_combo1.GetLBText( m_numchap , texte);
m_txt=texte;
UpdateData(false);
}
avec m_numchap défini dans la classe CEleves en int public et m_txt en CString public.

void CSyllabe3::OnButton6()
{
CString texte;
CEleves *pEleves = new CEleves;
int m_var = pEleves->m_numchap;
int varetat = pEleves->m_choixchap;texte.Format("m_numchap %d; m_txt %c", var, varetat);
AfxMessageBox(texte);
}

En utilisant DEBUG, je me suis aperçu que lorsque que je ferme ma boite de dialogue liée à CEleves, toutes les variables ne sont pas mémorisées.
En ouvrant la boite de dialogue liée à CSyllabe3 le contenus des variables appelés dans la classe CEleves prennent la valeur de -451150451.

MERCI POUR VOTRE AIDE.

1 réponse

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
14 nov. 2003 à 23:43
Si tu veux que des champ soit persistant après que l'objet soit détruit, met les en static dans la classe CEleves. Il seront commun à tous les objets CEleves qui seront créés. En fait, l'objet CEleves que tu crée dans la 2ème boite de dialogue n'a rien à voir avec celle que tu vient de fermer.

Dans la classe CEleves :
public:
static int m_numChap:
static Cstring m_Txt:

Dans On Button6:
int m_var = CEleves::m_numchap;
int varetat = CEleves::m_choixchap;

A prioir ça devrait être suffisant (il suffit qu'il n'y ai qu'une seule instance de CEleve à chaque fois).
0
Rejoignez-nous