Afficher les contextes de l’appareil

Une application obtient un contrôleur de domaine d’affichage en appelant la fonction BeginPaint, GetDC ou 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 fonction EndPaint ou ReleaseDC .

Il existe cinq types de contrôleurs de domaine pour les affichages vidéo :

  • Classe
  • Courant
  • Privé
  • Fenêtre
  • Parent

Contextes d’appareil de classe

Les 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 de périphérique de classe ; utilisez plutôt un contexte d’appareil privé.

Contextes d’appareil courants

Les contextes d’appareil courants sont des contrôleurs de domaine d’affichage 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é

Les contextes d’appareil privé affichent des contrôleurs de domaine qui, contrairement aux contextes d’appareil courants, conservent les modifications apportées aux données par défaut même après qu’une application les libère. 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, et ainsi de suite. 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é une fois la dernière fenêtre de cette classe 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 membre de style 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 la fonction GetDC, GetDCEx ou BeginPaint 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 dans 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; voir Contextes d’appareil d’affichage parent.