Partager via


Zone non cliente

Le système envoie un message WM_NCPAINT à la fenêtre chaque fois qu’une partie de la zone non cliente de la fenêtre, telle que la barre de titre, la barre de menus ou le cadre de la fenêtre, doit être mise à jour. Le système peut également envoyer d’autres messages pour diriger une fenêtre pour mettre à jour une partie de sa zone cliente ; par exemple, lorsqu’une fenêtre devient active ou inactive, elle envoie le message WM_NCACTIVATE pour mettre à jour sa barre de titre. En général, le traitement de ces messages pour les fenêtres standard n’est pas recommandé, car l’application doit être en mesure de dessiner toutes les parties requises de la zone non cliente pour la fenêtre. Pour cette raison, la plupart des applications transmettent ces messages à DefWindowProc pour un traitement par défaut.

Une application qui crée des zones non clientes personnalisées pour ses fenêtres doit traiter ces messages. Dans ce cas, l’application doit utiliser un contexte d’appareil de fenêtre pour effectuer le dessin dans la fenêtre. Le contexte d’appareil de fenêtre permet à l’application de dessiner toutes les parties de la fenêtre, y compris la zone non cliente. Une application récupère un contexte d’appareil de fenêtre à l’aide de la fonction GetWindowDC ou GetDCEx et, une fois le dessin terminé, doit libérer le contexte de l’appareil de fenêtre à l’aide de la fonction ReleaseDC .

Le système gère une région de mise à jour pour la zone non cliente. Lorsqu’une application reçoit un message WM_NCPAINT , le paramètre wParam contient un handle vers une région définissant les dimensions de la région de mise à jour. L’application peut utiliser le handle pour combiner la région de mise à jour avec la région de découpage pour le contexte d’appareil de fenêtre. Le système ne combine pas automatiquement la région de mise à jour lors de la récupération du contexte d’appareil de fenêtre, sauf si l’application utilise GetDCEx et spécifie à la fois le handle de région et l’indicateur DCX_INTERSECTRGN. Si l’application ne combine pas la région de mise à jour, seules les opérations de dessin qui s’étendraient en dehors de la fenêtre sont rognées. L’application n’est pas responsable de l’effacement de la région de mise à jour, qu’elle utilise ou non la région.

Si une application traite le message WM_NCACTIVATE , après traitement, il doit retourner TRUE pour diriger le système pour terminer la modification de la fenêtre active. Si la fenêtre est réduite lorsque l’application reçoit le message WM_NCACTIVATE , elle doit passer le message à DefWindowProc. Dans ce cas, la fonction par défaut redessine l’étiquette de l’icône.