Mensaje _ WM NCCALCSIZE

Se envía cuando se debe calcular el tamaño y la posición del área de cliente de una ventana. Al procesar este mensaje, una aplicación puede controlar el contenido del área de cliente de la ventana cuando cambia el tamaño o la posición de la ventana.

Una ventana recibe este mensaje a través de su función WindowProc.

#define WM_NCCALCSIZE                   0x0083

Parámetros

wParam

Si wParam es TRUE, especifica que la aplicación debe indicar qué parte del área de cliente contiene información válida. El sistema copia la información válida en el área especificada dentro del nuevo área de cliente.

Si wParam es FALSE, la aplicación no necesita indicar la parte válida del área de cliente.

lParam

Si wParam es TRUE, lParam apunta a una estructura NCCALCSIZE _ PARAMS que contiene información que una aplicación puede usar para calcular el nuevo tamaño y la posición del rectángulo de cliente.

Si wParam es FALSE, lParam apunta a una estructura RECT. En la entrada, la estructura contiene el rectángulo de ventana propuesto para la ventana. Al salir, la estructura debe contener las coordenadas de pantalla del área cliente de la ventana correspondiente.

Valor devuelto

Tipo: LRESULT

Si el parámetro wParam es FALSE, la aplicación debe devolver cero.

Si wParam es TRUE, la aplicación debe devolver cero o una combinación de los valores siguientes.

Si wParam es TRUE y una aplicación devuelve cero, el área de cliente antigua se conserva y se alinea con la esquina superior izquierda del nuevo área de cliente.

Código o valor devuelto Descripción
WVR _ AlignTOP
0x0010
Especifica que el área de cliente de la ventana se conservará y se alineará con la parte superior de la nueva posición de la ventana. Por ejemplo, para alinear el área de cliente con la esquina superior izquierda, devuelva los valores ALIGNTOP y _ WVR _ ALIGNLEFT de WVR.
WVR _ ALIGNRIGHT
0x0080
Especifica que el área de cliente de la ventana se conservará y se alineará con el lado derecho de la nueva posición de la ventana. Por ejemplo, para alinear el área de cliente con la esquina inferior derecha, devuelva los valores DE WVR _ ALIGNRIGHT y WVR _ ALIGNBOTTOM.
WVR _ AlignLEFT
0x0020
Especifica que el área de cliente de la ventana se conservará y se alineará con el lado izquierdo de la nueva posición de la ventana. Por ejemplo, para alinear el área de cliente con la esquina inferior izquierda, devuelva los valores DE WVR _ ALIGNLEFT y WVR _ ALIGNBOTTOM.
WVR _ AlignBOTTOM
0x0040
Especifica que el área de cliente de la ventana se conservará y se alineará con la parte inferior de la nueva posición de la ventana. Por ejemplo, para alinear el área de cliente con la esquina superior izquierda, devuelva los valores DE WVR ALIGNTOP y _ WVR _ ALIGNLEFT.
WVR _ HREDRAW
0x0100
Usado en combinación con cualquier otro valor, excepto WVR _ VALIDRECTS, hace que la ventana se vuelva a dibujar completamente si el rectángulo de cliente cambia de tamaño horizontalmente. Este valor es similar al estilo de clase _ HREDRAW de CS
WVR _ DRAW 0X0200
Usado en combinación con cualquier otro valor, excepto WVR _ VALIDRECTS, hace que la ventana se vuelva a dibujar completamente si el rectángulo de cliente cambia de tamaño verticalmente. Este valor es similar al estilo de clase _ CS DRAW
WVR _ Volver a dibujar
0x0300
Este valor hace que se vuelva a dibujar toda la ventana. Es una combinación de los valores de WVR _ HREDRAW y WVR _ DRAW.
WVR _ ValidRECTS
0x0400
Este valor indica que, tras la devolución de WM _ NCCALCSIZE,los rectángulos especificados por los miembros rgrc 1 y rgrc 2 de la estructura NCCALCSIZE PARAMS contienen rectángulos de destino y área de origen [ ] [ ] válidos, respectivamente. _ El sistema combina estos rectángulos para calcular el área de la ventana que se va a conservar. El sistema copia cualquier parte de la imagen de ventana que se encuentra dentro del rectángulo de origen y recorta la imagen al rectángulo de destino. Ambos rectángulos están en coordenadas relativas a elementos primarios o relativos a la pantalla. Esta marca no se puede combinar con ninguna otra marca.
Este valor devuelto permite a una aplicación implementar estrategias de conservación del área cliente más elaborados, como centrar o conservar un subconjunto del área cliente.

Observaciones

La ventana se puede volver a dibujar, en función de si se especifica el estilo de clase _ CS HREDRAW o CS _ DRAWDRAW. Este es el procesamiento predeterminado compatible con versiones anteriores de este mensaje por parte de la función DefWindowProc (además del cálculo habitual del rectángulo de cliente descrito en la tabla anterior).

Cuando wParam es TRUE, simplemente devolver 0 sin procesar los rectángulos NCCALCSIZE _ PARAMS hará que el área de cliente cambie de tamaño al tamaño de la ventana, incluido el marco de ventana. Esto quitará el marco de ventana y los elementos de título de la ventana, dejando solo el área de cliente mostrada.

A partir de Windows Vista, quitar el marco estándar simplemente devolviendo 0 cuando wParam es TRUE no afecta a los fotogramas que se extienden al área de cliente mediante la función DwmExtendFrameIntoClientArea. Solo se quitará el marco estándar.

Requisitos

Requisito Value
Cliente mínimo compatible
[Solo aplicaciones de escritorio] de Windows 2000 Professional
Servidor mínimo compatible
[Solo aplicaciones de escritorio] de Windows 2000 Server
Encabezado
Winuser.h (incluir Windows.h)

Consulte también

Referencia

DefWindowProc

MoveWindow

SetWindowPos

NCCALCSIZE _ PARAMS

Conceptual

Windows

Otros recursos

RECT