yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 2009
-
8 mars 2007 à 17:19
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 2009
-
9 mars 2007 à 11:22
Salut à toutes et à tous !
Voilà mon souci.
J'ai un static contenant un texte (un pourcentage) que je modifie de temps en temps.
La fenêtre mère de mon static, a une image de fond.
Donc pour que l'on puisse voir l'image derrière le texte, je traite le message WM_CTLCOLORSTATIC comme ceci :
SetBkMode((HDC)wParam, TRANSPARENT);
return (BOOL)GetStockObject(NULL_BRUSH);
Jusque là tout va bien.
Sauf que lorsque je modifie le texte du static, le nouveau texte se superpose au précédent (100 % par dessus 99 %. par dessus....par dessus 0%).
Je me retrouve donc avec un tas noir illisible.
J'ai déjà essayé de forcer le rafraîchissement (UpdateWindow, RedrawWindow, InvalidateRect, InvalidateRgn,...).
Auriez-vous une autre idée ou solution à me proposer ? Un bout de code ou un lien ?
Je commence à saturer ! J'ai la tête qui chauffe c'est horrible !
Si vous me cherchez j'ai la tête dans la cuvette.
Merci d'avance pour votre aide. Tout renseignement est le bienvenu.
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 8 mars 2007 à 18:34
Malheureusement non !
Le WM_CTLCOL... est traité pareil que moi et le InvalidateRect(StatichWnd, 0, 1), je l'avais déjà essayé.
J'ai réessayé mais toujours sans succès.
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 8 mars 2007 à 18:45
Au cas où ça vous aiderait à résoudre mon problème, lorsque je minimise la fenêtre puis la restaure, le texte s'affiche clairement (avant d'être écrasé à nouveau s'il change), il est rafraîchit.
Par contre, si je passe une autre fenêtre devant ou sors le texte de l'écran, le rafraîchissement n'a pas lieu.
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 8 mars 2007 à 19:09
Oui vecchio56, le résultat est exactement ce que je veux. Son exe le prouve.
Les différences que j'ai remarqué pour l'instant, c'est que l'image est dans un static (moi fond de la fenêtre) et que ma fenêtre et mon static sont créés avec CreateWindowEx.
En ayant mis l'image dans un static, le résultat ne change pas de mon côté.
Par contre avec la source de BruNews, impossible de compiler. Il me dit qu'il ne trouve pas afxres.h.
Je suis sous Visual C++ 2005 Express.
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 8 mars 2007 à 19:58
C'est bon c'est compilé et ça marche nickel pour le programme de BruNews.
Je reprends ça demain parce que là je sature.
J'ai les idées qui tournent en rond et j'avance pas.
Merci pour votre aide, je vous tiens au courant pour la suite.
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 9 mars 2007 à 10:08
Ca y est j'ai trouvé ! Grâce au code de BruNews.
Je devais vraiment saturé hier parce que c'était tout bête en fait. J'ai limite honte.
J'ai gardé mon image de fond sur la fenêtre et pour rafraichier le texte, j'ai fait ceci :
RECT Rect;Rect.left Gauche; Rect.right Gauche + Largeur;Rect.top Haut; Rect.bottom Haut + Hauteur;
InvalidateRect(FenetrehWnd, &Rect, true);
SetWindowText(LabelhWnd, "blabla");
Donc j'étais vraiment pas loin du truc avant même de poster le message.
Merci à tous pour votre aide.