Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUMS C FAQs C TUTORIELS C LIVRES C COMPILATEURS C SOURCES GTK+

Tutorial d'initiation
A la programmation avec l'API Windows

Tutorial d'initiation a la programmation Windows avec Microsoft Visual C++
PrécédentIndexSuivant

Chapitre 3

Les fenêtres

15. Fond personnalisé

Cours théorique :

Jusqu'à présent, nous avions laissé Windows effacer le fond. L'effacement de la zone client avant le redessinement n'est pas nécessaire, la méthode la plus simple et la plus rapide est de redessiner par dessus l'ancienne zone. Toutefois, si l'on veut redessiner une partie de la zone client seulement ou si le nouveau dessin ne couvre pas toute la zone (du texte avec fond transparent par exemple) il est nécessaire d'effacer d'abord.

Pour cela, il faut utiliser le message WM_ERASEBKGND. Lorsque ce message est envoyé, un 'handle' sur le contexte d'affichage à effacer est passé en paramètre. Il faut impérativement utiliser le 'handle' passé en paramètre pour effectuer toutes les opérations de dessin. L'application dispose de plusieurs solutions pour effacer la zone client. Elle peut effectuer des tâches complexes, afficher des images, puis un texte... Si les images ne couvrent pas toutes la zone, il faut effacer les parties qui resteront visibles. Pour cela, on peut utiliser la fonction FillRect(). Cette fonction ne prend pas en paramètre une couleur mais un HBRUSH. On peut créer des 'brushes' à partir d'images bitmap avec CreatePatternBrush() ou encore à partir d'une couleur unie avec CreateSolidBrush(). Si l'application désire simplement modifier la couleur de fond de sa zone client, elle n'est pas obligée de traiter le message WM_ERASEBKGND. Elle peut simplement utiliser CreateSolidBrush() et passer le résultat au membre hbrBackground de la structure WNDCLASSEX lors de la création de la classe de la fenêtre. De cette manière la fonction DefWindowProc() écrasera le fond elle même avec la couleur demandée.


PrécédentIndexSuivant

Responsable bénévole de la rubrique C : Arnaud Feltz (buchs) - Contacter par EMail :
Vos questions techniques : forum d'entraide C - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.