La fonction invalidate marque la zone de dessin comme invalidée. Ce drapeau est utilisé lorsque la fenêtre est redessinée, si la zone est invalidée, elle redessine la zone, sinon elle laissera simplement la zone de l'écran telle qu'elle est. invalidate invalide la totalité de la zone client d'un objet donné, invalidaterect invalide une région spécifique de la zone client. La fonction de mise à jour effectue le redraw réel. La raison d'un tel mécanisme, et pas seulement de dessiner immédiatement quand vous savez que quelque chose doit être changé, c'est que vous pouvez empêcher plusieurs retraits, disons par exemple que vous avez reçu trois messages en une fois, qui font défiler une zone de texte. Si vous redessiniez la zone de texte pour chacune des touches, vous deviez dessiner la zone de texte trois fois et l'application ne répondait plus. En traitant à la place tous les événements clés, en mettant à jour la structure de données attachée à la zone de texte et en invalidant la zone de texte avant de redessiner la zone de texte, vous redessinez seulement la zone de texte une fois.
vous voulez dire, nous ne devrions pas appeler "Invalidate" ou "CWnd :: UpdateWindow()" à une instance dans l'application droite? nous devons appeler l'un ou l'autre à droite pour obtenir le message wm_paint – Naruto
En effet. Appeler les deux n'est pas nécessaire. Vous n'appelez généralement 'UpdateWindow' que si le même thread effectue un long calcul par la suite, de sorte qu'il ne retournera pas assez vite à sa boucle de message. Dans ce cas, vous voulez repeindre immédiatement, ne pas attendre un moment plus pratique. Mais en général, utilisez 'Invalidate'. – Thomas
oh ok Merci ... – Naruto