Gérer la couleur de fond d'une fenêtre après création de celle-ci

 

Lors de la définition d'une classe de fenêtres, il est possible de définir la couleur de fond de celle-ci.

Mais comment modifier cette couleur ensuite ?

La solution utilisée permet de modifier la couleur de fond, mais elle peut aller bien plus loin, car il sera possible de dessiner ce que l'on veut sur ce fond.

Actuellement, je ne sais pas s'il existe d'autres solutions...

 

Lorsque Windows informe une application que le contenu de la fenêtre n'est plus correcte, il envoi différents messages. Dont un pour redessiner le fond de l'écran.

Ce message se nomme WM_ERASEBKGND

wParam contient un handle sur le contexte de périphérique.

Vous pourrez donc récupérer ce handle hdc = (HDC) wParam;

Pour ensuite utiliser le GDI et redessiner le fond de la fenêtre.

 

Image non trouvée !Il faudra bien penser à mettre return 0; dans la section gérant WM_ERASEBKGND de votre procédure de gestion des messages de la fenêtre. Sinon, votre code sera bien lancé, mais celle de Windows (la procédure par défaut) le sera aussi !

Image non trouvée !Ce message peut être néfaste lorsque votre application est un jeu. En général, vous avez déjà une procédure gérant l'affichage, et le fait que windows vide lui aussi la zone client peut dans le meilleur des cas être moche à l'écran (effet de flash), voire affecter le rendu à l'écran. Il peut alors être intéressant d'intercepter ce message, généralement pour ne rien faire !

case WM_ERASEBKGND:

...

return 0;