Quand dessiner dans une fenêtre
Une application dessine dans une fenêtre à divers moments : lors de la création d’une fenêtre, lors de la modification de la taille de la fenêtre, lors du déplacement de la fenêtre derrière une autre fenêtre, lors de la réduction ou de l’optimisation de la fenêtre, lors de l’affichage des données à partir d’un fichier ouvert et lors du défilement, de la modification ou de la sélection d’une partie des données affichées.
Le système gère les actions telles que le déplacement et le dimensionnement d’une fenêtre. Si une action affecte le contenu de la fenêtre, le système marque la partie affectée de la fenêtre comme prête pour la mise à jour et, à l’occasion suivante, envoie un message WM_PAINT à la procédure de fenêtre de la fenêtre. Le message est un signal envoyé à l’application pour déterminer ce qui doit être mis à jour et effectuer le dessin nécessaire.
Certaines actions sont gérées par l’application, telles que l’affichage des fichiers ouverts et la sélection des données affichées. Pour ces actions, une application peut marquer pour mettre à jour la partie de la fenêtre affectée par l’action, ce qui entraîne l’envoi d’un message WM_PAINT à l’occasion suivante. Si une action nécessite un retour immédiat, l’application peut dessiner pendant la mise en œuvre de l’action, sans attendre WM_PAINT. Par exemple, une application classique met en surbrillance la zone sélectionnée par l’utilisateur plutôt que d’attendre que le message WM_PAINT suivant met à jour la zone.
Dans tous les cas, une application peut dessiner dans une fenêtre dès sa création. Pour dessiner dans la fenêtre, l’application doit d’abord récupérer un handle dans un contexte de périphérique d’affichage pour la fenêtre. Dans l’idéal, une application effectue la plupart de ses opérations de dessin pendant le traitement des messages WM_PAINT . Dans ce cas, l’application récupère un contexte de périphérique d’affichage en appelant la fonction BeginPaint . Si une application dessine à un autre moment, par exemple à partir de WinMain ou pendant le traitement des messages au clavier ou à la souris, elle appelle la fonction GetDC ou GetDCEx pour récupérer le contrôleur de domaine d’affichage.