Afficher les contextes d’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 apparaîtra. 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ées
- Fenêtre
- Parent
Contextes d’appareil de classe
Les contextes d’appareil de classe sont strictement pris en charge pour la compatibilité avec les versions 16 bits de Windows. Lors de l’écriture de 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 les objets, attributs et 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é sont des contrôleurs de domaine d’affichage 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 a mises en production. Les contextes d’appareil privé sont utilisés dans les applications qui effectuent de nombreuses opérations de dessin, telles que les applications de conception assistée par ordinateur (CAO), les applications de publication de bureau, les 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 utilisation. Le système supprime automatiquement un contexte d’appareil privé après la destruction de la dernière fenêtre de cette classe.
Une application crée un contexte d’appareil privé en spécifiant d’abord le style CS_OWNDC classe fenêtre 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 aux 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 les fenêtres 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 ; consultez GetWindowDC.
Contextes d’appareil parent
Un contexte d’appareil parent permet à une application de réduire le temps nécessaire à la configuration de la zone 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 de bouton et de modification. Les contextes d’appareil parent sont destinés à être utilisés avec des fenêtres enfants uniquement, jamais avec des fenêtres contextuelles ou de niveau supérieur. Pour plus d’informations ; consultez Contextes d’appareil d’affichage parent.