Je sais que WM_PAINT dit à une fenêtre qu'il doit se repeindre entièrement, mais apparemment ce n'est pas le message qui est envoyé quand il a été partiellement couvert et ensuite la fenêtre qui était devant lui n'est plus gênante et elle a besoin repeindre la partie sale. Est-ce que quelqu'un sait quel message est envoyé dans ce cas?Quel message Windows est envoyé pour repeindre une fenêtre partiellement masquée?
EDIT: Trouvé le problème:
La question implique un contrôle Delphi je l'ai écrit pour intégrer une surface de rendu SDL sur une forme Delphi. SDL a une API pour construire son moteur de rendu sur HWND d'une autre fenêtre, et il le marque comme une "fenêtre étrangère". SDL traite généralement WM_PAINT
en interne, donc j'ai fini par devoir ajouter du code à WindowProc de SDL pour transférer le message sur le WindowProc externe s'il s'agit d'une fenêtre étrangère. Cela fonctionnait parfois, mais il s'est avéré qu'il y avait un petit problème qui enlevait le drapeau de la fenêtre étrangère de la structure de données de la fenêtre, de sorte qu'il avalait le message au lieu de le transmettre à mon application. Une fois que j'ai corrigé cela, j'ai commencé à recevoir les messages WM_PAINT
tout le temps.
Toutes les 5 réponses sont correctes: WM_PAINT est le message * qui est envoyé lorsque tout ou partie de votre espace client doit être repeint.Sur les nouvelles versions de Windows, il n'est pas envoyé aussi souvent qu'auparavant, car Windows cache le bureau de manière beaucoup plus agressive afin d'obtenir les effets visuels de la fenêtre et de la fenêtre en verre - Windows peint à partir de bitmaps internes N'envoie aucun message du tout dans ce cas. –