Contextes d’appareil d’affichage de classe
À l’aide d’un contexte d’appareil 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 pour préparer un contexte d’appareil pour le dessin.
Le système fournit un contexte d’appareil de classe pour une fenêtre s’il 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 l’appareil de classe à l’aide de la fonction GetDCchaque fois que la première fenêtre a été créée. 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 d’appareil 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 l’appareil de classe. La récupération du contexte de l’appareil définit l’origine et la région de découpage de l’appareil correctes pour la nouvelle fenêtre. Une fois que l’application a récupéré le contexte d’appareil de classe d’une nouvelle fenêtre dans la classe, le contexte de l’appareil ne peut plus être utilisé pour dessiner dans la fenêtre d’origine sans la récupérer à nouveau pour cette fenêtre. En règle générale, chaque fois qu’elle doit dessiner dans une fenêtre, une application doit récupérer explicitement le contexte d’appareil de classe de 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 et la zone de découpage de l’appareil correctes pour la fenêtre, et incorpore la région de mise à jour. L’application doit également appeler EndPaint pour restaurer le pointage si BeginPaint le masquer. EndPaint n’a aucun autre effet sur un contexte d’appareil de classe.
Le système transmet le contexte de l’appareil 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 il 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.