Condividi tramite


Area non client

Il sistema invia un messaggio WM_NCPAINT alla finestra ogni volta che deve essere aggiornata una parte dell'area non client della finestra, ad esempio la barra del titolo, la barra dei menu o la cornice della finestra. Il sistema può anche inviare altri messaggi per indirizzare una finestra per aggiornare una parte dell'area client; Ad esempio, quando una finestra diventa attiva o inattiva, invia il messaggio WM_NCACTIVATE per aggiornare la barra del titolo. In generale, l'elaborazione di questi messaggi per le finestre standard non è consigliata, perché l'applicazione deve essere in grado di disegnare tutte le parti richieste dell'area non client per la finestra. Per questo motivo, la maggior parte delle applicazioni passa questi messaggi a DefWindowProc per l'elaborazione predefinita.

Un'applicazione che crea aree non client personalizzate per le relative finestre deve elaborare questi messaggi. In questo caso, l'applicazione deve usare un contesto di dispositivo finestra per eseguire il disegno nella finestra. Il contesto di dispositivo della finestra consente all'applicazione di disegnare in tutte le parti della finestra, inclusa l'area non client. Un'applicazione recupera un contesto di dispositivo finestra usando la funzioneGetWindowDC o GetDCEx e, al terminedel disegno, deve rilasciare il contesto del dispositivo finestra usando la funzioneReleaseDC.

Il sistema gestisce un'area di aggiornamento per l'area non client. Quando un'applicazione riceve un messaggio di WM_NCPAINT, il parametro wParam contiene un handle per un'area che definisce le dimensioni dell'area di aggiornamento. L'applicazione può usare l'handle per combinare l'area di aggiornamento con l'area di ritaglio per il contesto del dispositivo della finestra. Il sistema non combina automaticamente l'area di aggiornamento durante il recupero del contesto di dispositivo della finestra, a meno che l'applicazione non usi GetDCEx e specifichi sia l'handle dell'area che il flag DCX_INTERSECTRGN. Se l'applicazione non combina l'area di aggiornamento, vengono ritagliate solo le operazioni di disegno che altrimenti si estendono all'esterno della finestra. L'applicazione non è responsabile della cancellazione dell'area di aggiornamento, indipendentemente dal fatto che usi l'area.

Se un'applicazione elabora il messaggio di WM_NCACTIVATE, dopo l'elaborazione deve restituire TRUE per indirizzare il sistema a completare la modifica della finestra attiva. Se la finestra viene ridotta a icona quando l'applicazione riceve il messaggio di WM_NCACTIVATE, deve passare il messaggio a DefWindowProc. In questi casi, la funzione predefinita ridisegna l'etichetta per l'icona.