Contextes d’appareil d’affichage courants
Un contexte d’appareil courant est utilisé pour dessiner dans la zone cliente de la fenêtre. Le système fournit un contexte d’appareil commun par défaut pour toute fenêtre dont la classe window ne spécifie pas explicitement un style de contexte d’appareil d’affichage. Les contextes d’appareil courants sont généralement utilisés avec des fenêtres qui peuvent être dessinées sans modifications importantes des attributs de contexte de l’appareil. Les contextes d’appareil courants sont pratiques, car ils ne nécessitent pas de mémoire ou de ressources système supplémentaires, mais ils peuvent être gênants si l’application doit configurer de nombreux attributs avant de les utiliser.
Le système récupère tous les contextes d’appareil courants à partir du cache de contexte d’appareil d’affichage. Une application peut récupérer un contexte d’appareil commun immédiatement après la création de la fenêtre. Étant donné que le contexte d’appareil commun provient du cache, l’application doit toujours libérer le contexte de l’appareil dès que possible après le dessin. Une fois le contexte commun de l’appareil libéré, il n’est plus valide et l’application ne doit pas tenter de dessiner avec lui. Pour dessiner à nouveau, l’application doit récupérer un nouveau contexte d’appareil commun et continuer à récupérer et à libérer un contexte d’appareil commun chaque fois qu’elle dessine dans la fenêtre. Si l’application récupère le handle de contexte d’appareil à l’aide de la fonction GetDC , elle doit utiliser la fonction ReleaseDC pour libérer le handle. De même, pour chaque fonction BeginPaint , l’application doit utiliser une fonction EndPaint correspondante.
Lorsque l’application récupère le contexte de l’appareil, le système ajuste l’origine afin qu’elle s’aligne sur le coin supérieur gauche de la zone cliente. Il définit également la région de découpage afin que la sortie dans le contexte de l’appareil soit clippée dans la zone cliente. Toute sortie qui s’afficherait autrement en dehors de la zone cliente est clippée. Si l’application récupère le contexte d’appareil commun à l’aide de BeginPaint, le système inclut également la région de mise à jour dans la région de découpage pour restreindre davantage la sortie.
Lorsqu’une application libère un contexte d’appareil commun, le système restaure les valeurs par défaut pour les attributs du contexte d’appareil. Une application qui modifie les valeurs d’attribut doit le faire chaque fois qu’elle récupère un contexte d’appareil commun. La libération du contexte de l’appareil libère tous les objets de dessin que l’application peut avoir sélectionnés dans celui-ci, de sorte que l’application n’a pas besoin de libérer ces objets avant de libérer le contexte de l’appareil. Dans tous les cas, une application ne doit jamais supposer que le contexte d’appareil commun conserve les sélections non par défaut après avoir été publiée.