Dessin sans message WM_PAINT
Bien que les applications effectuent la plupart des opérations de dessin pendant le traitement du message WM_PAINT , il est parfois plus efficace pour une application de dessiner directement dans une fenêtre sans se fier au message WM_PAINT . Cela peut être utile lorsque l’utilisateur a besoin de commentaires immédiats, par exemple lors de la sélection de texte et du glissement ou du dimensionnement d’un objet. Dans ce cas, l’application dessine généralement lors du traitement des messages au clavier ou à la souris.
Pour dessiner dans une fenêtre sans utiliser de message WM_PAINT , l’application utilise la fonction GetDC ou GetDCEx pour récupérer un contexte de périphérique d’affichage pour la fenêtre. Avec le contexte du périphérique d’affichage, l’application peut dessiner dans la fenêtre et éviter toute intrusion dans d’autres fenêtres. Une fois le dessin terminé, l’application appelle la fonction ReleaseDC pour libérer le contexte de l’appareil d’affichage à utiliser par d’autres applications.
Lorsque vous dessinez sans utiliser de message WM_PAINT , l’application n’invalide généralement pas la fenêtre. Au lieu de cela, il dessine de telle sorte qu’il peut facilement restaurer la fenêtre et supprimer le dessin. Par exemple, lorsque l’utilisateur sélectionne du texte ou un objet, l’application dessine généralement la sélection en inversant ce qui se trouve déjà dans la fenêtre. L’application peut supprimer la sélection et restaurer le contenu d’origine de la fenêtre en l’inverse simplement.
L’application est responsable de la gestion minutieuse des modifications qu’elle apporte à la fenêtre. En particulier, si une application dessine une sélection et qu’un message WM_PAINT intervient, l’application doit s’assurer que tout dessin effectué pendant le message n’endommage pas la sélection. Pour éviter cela, de nombreuses applications suppriment la sélection, effectuent des opérations de dessin habituelles, puis restaurent la sélection une fois le dessin terminé.