Modifier les valeurs d'edit box dans une boite de dialog

cs_Colombus Messages postés 4 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 16 février 2003 - 15 févr. 2003 à 23:45
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 - 4 mai 2004 à 15:17
Bonjour,

J'ai créé une application MFC dans laquelle j'ouvre plusieurs documents (bitmap) qui son traités.
Pour régler les différents paramètres utilisés lors du traitement, j'ouvre des boites de dialogues. Ces boites de dialogue contiennent principalement des edit box et des spin qui me permettent d'incrémenter ces variables.

J'ai ecrit une méthode Display_values() qui doit mettre à jour les editbox de la boite de dialogue.

Lors de l'initialisation la boite de dialogue prend bien les bonnes valeurs. CEpendant lorsqu'on appuie sur le spin, la variable chane effectivement de valeur, mais l'affichage ne suit pas.

Pour ce faire j'associe à l'edit box des variables (m_edit_iteration par exemple). J'ai pensé qu'il suffirait de modifier la valeur de la vairable m_edit_iteration pour que ceci soit mis à jour.. mais comme dit, il ne fonctionne qu'à l'initialisation.

En cherchant sur le net, j'ai eu plusieurs pistes qui ne m'ont menée à rien. (UpdateData, (CStatic*)GetDlgItem suivi de SetWindowText..) mais je me heurte à un problème: SetWindowTExt, etc plantent à la méthode ASSERT(qqchose) car la variable hWnd est nulle (0x0000)..

Quelqu'un a t il une solution ou une piste?

MErci

Colombus

5 réponses

cs_Colombus Messages postés 4 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 16 février 2003
16 févr. 2003 à 01:16
Problème réglé:

Nulle part je n'avais lu qu'il fallait faire le DoModal() avant un UpdateData()!
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
16 févr. 2003 à 10:37
Bonjour,
un petit peu d'information ne fait pas de mal:

il y a deux parties bien distinctes lorsque l'on travaille avec MFC :
- les objets que l'on crée, à partir d'une CDialog par exemple
CDialog maDlg;
- les ressources Windows (la fenêtre proprement dite) qui est créée par Create(amodale) ou DoModal (modale)

Si tu oublie cette deuxième étape, le Handle windows est null
Attention aussi à détruire proprement les deux parties

avec DoModal ... c'est automatique et l'on ne se préoccupe que de l'objet C++ maDlg
0
cs_Colombus Messages postés 4 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 16 février 2003
16 févr. 2003 à 14:46
Merci bcp vieuxLion. c'est toujours bon à savoir.
Surtout quand on a un autre problème qui se pose ;-)
J'ai le même type de problème qui apparait lorsque l'utilisateur clique sur OK. il refait un updatedata mais manifestement après avoir "désactivé", le domodal... conclulsion le ASSERT ne fonctionne pas.

C'est pas très cool ce que je fais là puisque je poste la question avant de chercher par moi même.. mais je suis à court de temps, sorry. :-(

Merci pour votre aide.
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
16 févr. 2003 à 15:28
alors je te conseille l'approche modeless :
Créer l'objet C++ CDialog
utiliser Create pour créer la fenêtre Windows
utiliser ShowWindow (true) pour l'afficher / false pour la cacher (mais elle est toujours la si on en a besoin)
utiliser DestroyWindow ...

attention aussi à créer l'objet C++ par new (alloc dynamique sur le tas) et non pas sur la pile
tu pourra mémoriser le pointeur recu comme donnée membre dans ta fenêtre cadre
Et puis à détruire l'objet C++ par delete
0

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

Posez votre question
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
4 mai 2004 à 15:17
Bonjour,

Un problème similaire se pose à moi:

je souhaite que les fenetres d'aides de mon soft soient modless,
avant, j'utilisais de MessageBox ou AfxMessageBox,
Existe - t'il des fonctions similaires pour les non modal?

En fait, il me semble lourd de creer une DialogBox (surtout avec Visual) car cela en fixe la taille et l'intéret que je trouvais à MessageBox était de s'adapter...

Merci,

Magic Nono: l'informagicien!
0
Rejoignez-nous