[API] Changer le texte d'un static

Résolu
tarretg Messages postés 22 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 7 août 2007 - 23 juil. 2007 à 16:45
ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 - 24 juil. 2007 à 08:30
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

ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 3
23 juil. 2007 à 18:27
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.
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
23 juil. 2007 à 19:18
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
3
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
23 juil. 2007 à 17:45
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.
0
ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 3
23 juil. 2007 à 17:56
Salut !
Essaye quelque chose comme ca :

SetDlgItemText(hDlg, STATIC_REF3, "Mon Texte");
InvalidateRect(hDlg, 0, pRect, 0);
UpdateWindow(hdlg);
0

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

Posez votre question
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
23 juil. 2007 à 18:07
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.
0
ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 3
24 juil. 2007 à 08:30
Arff, oui, petit erreur de copier/coller depuis MSDN.
0
Rejoignez-nous