Je dessine du texte sur une fenêtre au message WM_PAINT, est-il possible de rafraîchir cette région de fenêtre avant de dessiner une nouvelle ligne de texte afin que l'ancien texte au même endroit soit effacé ?Actualiser une région dans une fenêtre avant de dessiner du texte
1
A
Répondre
1
Vous devez appeler InvalidateRect pour la fenêtre avec le paramètre bErase
réglé sur TRUE
afin qu'il s'effacer avant la WM_PAINT est générée.
Ceci est souvent requis lorsque la fenêtre est un contrôle de texte statique, car ceux-ci ne s'effacent pas automatiquement lorsque vous modifiez leur valeur.
Assurez-vous que votre fenêtre traite correctement WM_ERASEBKGND et que la classe de fenêtre n'a pas de pinceau de fond NULL, car c'est le mécanisme utilisé par InvalidateRect pour effectuer l'effacement.
0
Vous pouvez tout simplement FillRect sur l'ancien premier texte ...
0
HDC hdc = GetDC(NULL); //get windows handle whaterver if urs
HRGN hrgn;
//get that specific region and repaint it by following line
hrgn = CreateRectRgn(10, 10, 100, 100);
SelectClipRgn(hDC, hrgn);
PaintDesktop(hDC);
Oui, mais il ne se rafraîchit pas lorsque j'y dessine un rectangle. – user963241