Afficher les contextes de l’appareil
Une application obtient un contrôleur de domaine d’affichage en appelant la fonctionBeginPaint, GetDCou fonction GetDCEx et en identifiant la fenêtre dans laquelle la sortie correspondante s’affiche. En règle générale, une application obtient un contrôleur de domaine d’affichage uniquement lorsqu’elle doit dessiner dans la zone cliente. Toutefois, vous pouvez obtenir un contexte d’appareil de fenêtre en appelant la fonction GetWindowDC. Une fois le dessin terminé, l’application doit libérer le contrôleur de domaine en appelant la fonctionEndPaintou ReleaseDC.
Il existe cinq types de contrôleurs de domaine pour les affichages vidéo :
- Classe
- Commun
- Privé
- Fenêtre
- Parent
Contextes d’appareil de classe
contextes d’appareil de classe sont pris en charge strictement pour la compatibilité avec les versions 16 bits de Windows. Lorsque vous écrivez votre application, évitez d’utiliser le contexte d’appareil de classe ; utilisez plutôt un contexte d’appareil privé.
Contextes d’appareil courants
contextes d’appareil courants affichent les contrôleurs de domaine gérés dans un cache spécial par le système. Les contextes d’appareil courants sont utilisés dans les applications qui effectuent des opérations de dessin peu fréquentes. Avant que le système retourne le handle DC, il initialise le contexte d’appareil commun avec des objets, des attributs et des modes par défaut. Toutes les opérations de dessin effectuées par l’application utilisent ces valeurs par défaut, sauf si l’une des fonctions GDI est appelée pour sélectionner un nouvel objet, modifier les attributs d’un objet existant ou sélectionner un nouveau mode.
Étant donné qu’il n’existe qu’un nombre limité de contextes d’appareil courants, une application doit les libérer une fois le dessin terminé. Lorsque l’application libère un contexte d’appareil commun, toutes les modifications apportées aux données par défaut sont perdues.
Contextes d’appareil privé
contextes d’appareil privé affichent des contrôleurs de domaine qui, contrairement aux contextes d’appareil courants, conservent toutes les modifications apportées aux données par défaut même après la publication d’une application. Les contextes d’appareil privé sont utilisés dans les applications qui effectuent de nombreuses opérations de dessin, telles que des applications de conception assistée par ordinateur (CAO), des applications de publication de bureau, des applications de dessin et de peinture, etc. Les contextes d’appareil privé ne font pas partie du cache système et ne doivent donc pas être libérés après l’utilisation. Le système supprime automatiquement un contexte d’appareil privé après la dernière fenêtre de cette classe a été détruite.
Une application crée un contexte d’appareil privé en spécifiant d’abord le style de classe fenêtre CS_OWNDC lorsqu’elle initialise le style membre de la structure WNDCLASS et appelle la fonction RegisterClass. (Pour plus d’informations sur les classes de fenêtre, consultez Classes de fenêtre.)
Après avoir créé une fenêtre avec le style CS_OWNDC, une application peut appeler leGetDC, GetDCExou BeginPaint fonction une fois pour obtenir un handle identifiant un contexte d’appareil privé. L’application peut continuer à utiliser ce handle (et le contrôleur de domaine associé) jusqu’à ce qu’elle supprime la fenêtre créée avec cette classe. Toutes les modifications apportées aux objets graphiques et à leurs attributs ou modes graphiques sont conservées par le système jusqu’à ce que la fenêtre soit supprimée.
Contextes d’appareil de fenêtre
Un contexte d’appareil de fenêtre permet à une application de dessiner n’importe où dans une fenêtre, y compris la zone non cliente. Les contextes d’appareil de fenêtre sont généralement utilisés par les applications qui traitent les messages WM_NCPAINT et WM_NCACTIVATE pour windows avec des zones non clientes personnalisées. L’utilisation d’un contexte d’appareil de fenêtre n’est pas recommandée à d’autres fins. Pour plus d’informations ; voir GetWindowDC.
Contextes d’appareil parent
Un contexte d’appareil parent permet à une application de réduire le temps nécessaire à la configuration de la région de découpage d’une fenêtre. Une application utilise généralement des contextes d’appareil parent pour accélérer le dessin pour les fenêtres de contrôle sans nécessiter de contexte d’appareil privé ou de classe. Par exemple, le système utilise des contextes d’appareil parent pour les contrôles push et modifier. Les contextes d’appareil parent sont destinés à être utilisés uniquement avec des fenêtres enfants, jamais avec des fenêtres contextuelles ou de niveau supérieur. Pour plus d’informations ; consultez contextes d’appareil d’affichage parent.