Le système n’est pas la seule source de messages WM_PAINT . La fonction InvalidateRect ou InvalidateRgn peut générer indirectement WM_PAINT messages pour vos fenêtres. Ces fonctions marquent la totalité ou une partie d’une zone client comme non valide (qui doit être redessinée).
Dans l’exemple suivant, la procédure de fenêtre invalide toute la zone cliente lors du traitement des messages WM_CHAR . Cela permet à l’utilisateur de modifier la figure en tapant un nombre et en affichant les résultats ; ces résultats sont dessinés dès qu’il n’y a pas d’autres messages dans la file d’attente de messages de l’application.
Dans cet exemple, l’argument NULL utilisé par InvalidateRect spécifie l’ensemble de la zone cliente ; l’argument TRUE entraîne l’effacement de l’arrière-plan. Si vous ne souhaitez pas que l’application attende que la file d’attente de messages de l’application n’ait pas d’autres messages, utilisez la fonction UpdateWindow pour forcer l’envoi immédiat du message WM_PAINT. S’il existe une partie non valide de la zone cliente, UpdateWindow envoie le message WM_PAINT pour la fenêtre spécifiée directement à la procédure de fenêtre.
La fonction InvalidateRect ajoute un rectangle à la région de mise à jour de la fenêtre spécifiée. La région de mise à jour représente la partie de la zone cliente de la fenêtre qui doit être redessinée.
Vous pouvez demander à votre application de redessiner l’intégralité du contenu de la zone cliente chaque fois que la fenêtre change de taille en définissant les styles CS\_HREDRAW et CS\_VREDRAW pour la classe de fenêtre.
Le message WM\_PAINT est envoyé lorsque le système ou une autre application effectue une demande de peinture d’une partie de la fenêtre d’une application.