Condividi tramite


messaggio WM_NCCALCSIZE

Inviato quando è necessario calcolare le dimensioni e la posizione dell'area client di una finestra. Elaborando questo messaggio, un'applicazione può controllare il contenuto dell'area client della finestra quando cambiano le dimensioni o la posizione della finestra.

Una finestra riceve questo messaggio tramite la relativa funzione WindowProc .

#define WM_NCCALCSIZE                   0x0083

Parametri

wParam

Se wParam è TRUE, specifica che l'applicazione deve indicare quale parte dell'area client contiene informazioni valide. Il sistema copia le informazioni valide nell'area specificata all'interno della nuova area client.

Se wParam è FALSE, l'applicazione non deve indicare la parte valida dell'area client.

lParam

Se wParam è TRUE, lParam punta a una struttura NCCALCSIZE_PARAMS che contiene informazioni che un'applicazione può usare per calcolare le nuove dimensioni e la posizione del rettangolo client.

Se wParam è FALSE, lParam punta a una struttura RECT . Nella voce la struttura contiene il rettangolo di finestra proposto per la finestra. All'uscita, la struttura deve contenere le coordinate dello schermo dell'area client della finestra corrispondente.

Valore restituito

Tipo: LRESULT

Se il parametro wParam è FALSE, l'applicazione deve restituire zero.

Se wParam è TRUE, l'applicazione deve restituire zero o una combinazione dei valori seguenti.

Se wParam è TRUE e un'applicazione restituisce zero, l'area client precedente viene mantenuta e allineata all'angolo superiore sinistro della nuova area client.

Codice/valore restituito Descrizione
WVR_ALIGNTOP
0x0010
Specifica che l'area client della finestra deve essere mantenuta e allineata alla parte superiore della nuova posizione della finestra. Ad esempio, per allineare l'area client all'angolo superiore sinistro, restituire i valori WVR_ALIGNTOP e WVR_ALIGNLEFT .
WVR_ALIGNRIGHT
0x0080
Specifica che l'area client della finestra deve essere mantenuta e allineata al lato destro della nuova posizione della finestra. Ad esempio, per allineare l'area client all'angolo inferiore destro, restituire i valori WVR_ALIGNRIGHT e WVR_ALIGNBOTTOM.
WVR_ALIGNLEFT
0x0020
Specifica che l'area client della finestra deve essere mantenuta e allineata al lato sinistro della nuova posizione della finestra. Ad esempio, per allineare l'area client all'angolo inferiore sinistro, restituire i valori WVR_ALIGNLEFT e WVR_ALIGNBOTTOM .
WVR_ALIGNBOTTOM
0x0040
Specifica che l'area client della finestra deve essere mantenuta e allineata alla parte inferiore della nuova posizione della finestra. Ad esempio, per allineare l'area client all'angolo superiore sinistro, restituire i valori WVR_ALIGNTOP e WVR_ALIGNLEFT .
WVR_HREDRAW
0x0100
Utilizzato in combinazione con qualsiasi altro valore, ad eccezione di WVR_VALIDRECTS, fa sì che la finestra venga completamente ridisegnata se la dimensione del rettangolo client cambia orizzontalmente. Questo valore è simile allo stile della classe CS_HREDRAW
WVR_VREDRAW
0x0200
Usato in combinazione con qualsiasi altro valore, ad eccezione di WVR_VALIDRECTS, fa sì che la finestra venga completamente ridisegnata se la dimensione del rettangolo client cambia verticalmente. Questo valore è simile allo stile della classe CS_VREDRAW
WVR_REDRAW
0x0300
Questo valore determina il ridisegno dell'intera finestra. È una combinazione di valori WVR_HREDRAW e WVR_VREDRAW .
WVR_VALIDRECTS
0x0400
Questo valore indica che, al ritorno da WM_NCCALCSIZE, i rettangoli specificati dai membri rgrc[1] e rgrc[2] della struttura NCCALCSIZE_PARAMS contengono rispettivamente rettangoli di destinazione e di origine validi. Il sistema combina questi rettangoli per calcolare l'area della finestra da conservare. Il sistema copia qualsiasi parte dell'immagine della finestra all'interno del rettangolo di origine e ritaglia l'immagine nel rettangolo di destinazione. Entrambi i rettangoli si trovano in coordinate padre-relative o relative allo schermo. Questo flag non può essere combinato con altri flag.
Questo valore restituito consente a un'applicazione di implementare strategie di conservazione dell'area client più elaborate, ad esempio il centro o il mantenimento di un subset dell'area client.

 

Commenti

La finestra può essere ridisegnata, a seconda che venga specificato lo stile della classe CS_HREDRAW o CS_VREDRAW. Si tratta dell'elaborazione predefinita compatibile con le versioni precedenti di questo messaggio tramite la funzione DefWindowProc (oltre al normale calcolo del rettangolo client descritto nella tabella precedente).

Quando wParam è TRUE, la semplice restituzione di 0 senza elaborare i rettangoli NCCALCSIZE_PARAMS causerà il ridimensionamento dell'area client alle dimensioni della finestra, incluso il frame della finestra. Verrà rimossa la cornice della finestra e didascalia elementi dalla finestra, lasciando visualizzata solo l'area client.

A partire da Windows Vista, la rimozione del frame standard semplicemente restituendo 0 quando wParam è TRUE non influisce sui fotogrammi estesi nell'area client usando la funzione DwmExtendFrameIntoClientArea . Verrà rimosso solo il frame standard.

Requisiti

Requisito Valore
Client minimo supportato
Windows 2000 Professional [solo app desktop]
Server minimo supportato
Windows 2000 Server [solo app desktop]
Intestazione
Winuser.h (include Windows.h)

Vedi anche

Riferimento

DefWindowProc

Movewindow

Setwindowpos

NCCALCSIZE_PARAMS

Informazioni concettuali

Windows

Altre risorse

RECT