Arrière-plan de la fenêtre
L’arrière-plan de la fenêtre est la couleur ou le motif utilisé pour remplir la zone cliente avant qu’une fenêtre commence à dessiner. L’arrière-plan de la fenêtre couvre tout ce qui se trouvait à l’écran avant le déplacement de la fenêtre, effançant les images existantes et empêchant la nouvelle sortie de l’application d’être mélangée à des informations non liées.
Le système peint l’arrière-plan d’une fenêtre ou lui donne la possibilité de le faire en lui envoyant un message WM_ERASEBKGND lorsque l’application appelle BeginPaint. Si une application ne traite pas le message mais le transmet à DefWindowProc, le système efface l’arrière-plan en le remplissant avec le modèle dans le pinceau d’arrière-plan spécifié par la classe de la fenêtre. Si le pinceau n’est pas valide ou si la classe n’a pas de pinceau d’arrière-plan, le système définit le membre fErase dans la structure PAINTSTRUCT que BeginPaint retourne, mais n’effectue aucune autre action. L’application a ensuite une deuxième chance de dessiner l’arrière-plan de la fenêtre, si nécessaire.
Si elle traite WM_ERASEBKGND, l’application doit utiliser le paramètre wParam du message pour dessiner l’arrière-plan. Ce paramètre contient un handle dans le contexte de l’appareil d’affichage pour la fenêtre. Après avoir dessiné l’arrière-plan, l’application doit retourner une valeur différente de zéro. Cela garantit que BeginPaint ne définit pas par erreur le membre fErase de la structure PAINTSTRUCT sur une valeur différente de zéro (indiquant que l’arrière-plan doit être effacé) lorsque l’application traite le message WM_PAINT suivant.
Une application peut définir un pinceau d’arrière-plan de classe en affectant un handle de pinceau ou une valeur de couleur système au membre hbrBackground de la structure WNDCLASS lors de l’inscription de la classe avec la fonction RegisterClass . La fonction GetStockObject ou CreateSolidBrush peut être utilisée pour créer une poignée de pinceau. Une valeur de couleur système peut être l’une de celles définies pour la fonction SetSysColors . (La valeur doit être augmentée d’un seul avant d’être affectée au membre.)
Une application peut traiter le message WM_ERASEBKGND même si un pinceau d’arrière-plan de classe est défini. C’est généralement le cas dans les applications qui permettent à l’utilisateur de modifier la couleur ou le modèle d’arrière-plan d’une fenêtre spécifiée sans affecter les autres fenêtres de la classe. Dans ce cas, l’application ne doit pas transmettre le message à DefWindowProc.
Il n’est pas nécessaire pour une application d’aligner les pinceaux, car le système dessine le pinceau en utilisant l’origine de la fenêtre comme point de référence. Dans cette mesure, l’utilisateur peut déplacer la fenêtre sans affecter l’alignement des pinceaux de modèle.