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.
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 !
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;