Contextes d’appareil d’affichage de classe
En utilisant un contexte de périphérique de classe, une application peut utiliser un seul contexte d’appareil d’affichage pour chaque fenêtre appartenant à une classe spécifiée. Les contextes d’appareil de classe sont souvent utilisés avec des fenêtres de contrôle dessinées à l’aide des mêmes valeurs d’attribut. Comme les contextes d’appareil privé, les contextes d’appareil de classe réduisent le temps nécessaire à la préparation d’un contexte d’appareil pour le dessin.
Le système fournit un contexte de périphérique de classe pour une fenêtre si elle appartient à une classe de fenêtre ayant le style CS_CLASSDC. Le système crée le contexte de l’appareil lors de la création de la première fenêtre appartenant à la classe, puis utilise le même contexte d’appareil pour toutes les fenêtres créées par la suite dans la classe . Initialement, le contexte d’appareil de classe a les mêmes valeurs par défaut pour les attributs qu’un contexte d’appareil commun, mais l’application peut les modifier à tout moment. Le système conserve toutes les modifications, à l’exception de la région de découpage et de l’origine de l’appareil, jusqu’à ce que la dernière fenêtre de la classe ait été détruite. Une modification apportée pour une fenêtre s’applique à toutes les fenêtres de cette classe.
Une application peut récupérer le handle dans le contexte de périphérique de classe à l’aide de la fonction GetDC à tout moment après la création de la première fenêtre. L’application peut conserver et utiliser le handle sans le libérer, car le contexte d’appareil de classe ne fait pas partie du cache de contexte de périphérique d’affichage. Si l’application crée une autre fenêtre dans la même classe de fenêtre, l’application doit récupérer à nouveau le contexte de périphérique de classe. La récupération du contexte de l’appareil définit l’origine et la zone de découpage de l’appareil correctes pour la nouvelle fenêtre. Une fois que l’application a récupéré le contexte de périphérique de classe pour une nouvelle fenêtre de la classe, le contexte de l’appareil ne peut plus être utilisé pour dessiner dans la fenêtre d’origine sans le récupérer à nouveau pour cette fenêtre. En général, chaque fois qu’elle doit dessiner dans une fenêtre, une application doit récupérer explicitement le contexte de périphérique de classe pour la fenêtre.
Les applications qui utilisent des contextes d’appareil de classe doivent toujours appeler BeginPaint lors du traitement d’un message WM_PAINT . La fonction définit l’origine de l’appareil et la région de découpage appropriées pour la fenêtre, et intègre la région de mise à jour. L’application doit également appeler EndPaint pour restaurer l’insertion si BeginPaint l’a masqué. EndPaint n’a aucun autre effet sur un contexte de périphérique de classe.
Le système transmet le contexte de périphérique de classe lors de l’envoi du message WM_ERASEBKGND à l’application, ce qui permet aux valeurs d’attribut actuelles d’affecter tout dessin effectué par l’application ou le système lors du traitement de ce message. Comme elle le peut avec une fenêtre ayant un contexte d’appareil privé, une application peut utiliser GetDCEx pour forcer le système à retourner un contexte d’appareil commun pour la fenêtre qui a un contexte d’appareil de classe.
L’utilisation de contextes d’appareil de classe n’est pas recommandée.