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 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 règle générale, le traitement de ces messages pour les fenêtres standard n’est pas recommandé, car l’application doit pouvoir 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 le traitement par défaut.
Une application qui crée des zones non client 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 de l’appareil de fenêtre permet à l’application de dessiner dans 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 du GetWindowDC ou fonction GetDCEx et, lorsque le dessin est terminé, doit libérer le contexte de l’appareil de fenêtre à l’aide de la fonctionReleaseDC.
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 du contexte de l’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 de l’appareil de fenêtre, sauf si l’application utilise GetDCEx et spécifie à la fois le handle de région et l’indicateur de DCX_INTERSECTRGN. Si l’application ne combine pas la région de mise à jour, seules les opérations de dessin qui s’étendraient à l’extérieur de la fenêtre sont clippées. L’application n’est pas responsable de l’effacement de la région de mise à jour, qu’elle utilise la région.
Si une application traite le message WM_NCACTIVATE, après le traitement, elle 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 transmettre le message à DefWindowProc. Dans ce cas, la fonction par défaut redessine l’étiquette de l’icône.