[API] Changer le texte d'un static [Résolu]

Signaler
Messages postés
22
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
7 août 2007
-
Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
20 janvier 2013
-
Bonjour,

Je développe une petite application en Win32.
Lorsque l'utilisateur fait un choix sur une ComboBox, je voudrais que la valeur de mes controles "Static Text" changent.
J'utilise donc la fonction SetDlgItemText comme suit:

SetDlgItemText(hDlg, STATIC_REF3, NULL);
SetDlgItemText(hDlg, STATIC_REF3, "Mon Texte");

Le problème est que je réécris par dessus mon ancien texte! Je n'arrive pas à effacer le texte qu'il y avait précédemment dans mon Static!
Je suis obligé de réduire la fenetre et de la réouvrir pour que cela soit rafraichi avec simplement le nouveau!
J'ai essayé avec UpdateWindow, mais rien à faire...

Quelqu'un peut m'aider?

Merci.

6 réponses

Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
20 janvier 2013

Oui oui je sais, mais ce qui m'a fait penser à ca c'est "Je suis obligé de réduire la fenetre et de la réouvrir pour que cela soit rafraichi avec simplement le nouveau!"
C'a m'était déjà arrivé il y a longtemps, je ne sais plus trop les circonstances, et utiliser InvalidateRect avant le UpdateWindow m'avait permi de corriger le problème.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
InvalidateRect ne prend que trois paramètre normalement
Il faudrait mettre le dernier à 0 sinon on risque de se retrouver avec deux textes superposés dans le static

InvalidateRect(hDlg, 0, 1);
UpdateWindow(hdlg);
_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Normalement, dans un static, le nouveau texte devrait écraser l'ancien. Il parait que ton static a un comportement non standard. Montre-nous un peu plus de code.
Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
20 janvier 2013

Salut !
Essaye quelque chose comme ca :

SetDlgItemText(hDlg, STATIC_REF3, "Mon Texte");
InvalidateRect(hDlg, 0, pRect, 0);
UpdateWindow(hdlg);
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
ctx_man >> SetDlgItemText(), comme SetWindowText(), envoie le message WM_SETTEXT à la procédure par défaut du Static. En traitant ce message, cette procédure efface l'ancien texte et le remplace par le nouveau. Il y'a donc quelque chose qui l'empêche de l'effacer. On peut avoir ce genre de comportement avec les Static transparents.
Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
20 janvier 2013

Arff, oui, petit erreur de copier/coller depuis MSDN.