Compartir a través de


WM_NCCALCSIZE mensaje

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 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 la 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 cliente contiene información válida. El sistema copia la información válida en el área especificada dentro del área de cliente nueva.

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

lParam

Si wParam es TRUE, lParam apunta a una estructura de 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 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, se conserva el área cliente anterior y se alinea con la esquina superior izquierda del área de cliente nueva.

Código o valor devuelto Descripción
WVR_ALIGNTOP
0x0010
Especifica que el área cliente de la ventana se va a conservar y 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 de WVR_ALIGNTOP y WVR_ALIGNLEFT .
WVR_ALIGNRIGHT
0x0080
Especifica que el área cliente de la ventana se va a conservar y 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 WVR_ALIGNRIGHT y WVR_ALIGNBOTTOM.
WVR_ALIGNLEFT
0x0020
Especifica que el área cliente de la ventana se va a conservar y 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 cliente de la ventana se va a conservar y alinear con la parte inferior de la nueva posición de la ventana. Por ejemplo, para alinear el área cliente con la esquina superior izquierda, devuelva los valores de WVR_ALIGNTOP y WVR_ALIGNLEFT .
WVR_HREDRAW
0x0100
Se usa en combinación con cualquier otro valor, excepto WVR_VALIDRECTS, hace que la ventana se vuelva a dibujar completamente si el rectángulo del cliente cambia el tamaño horizontalmente. Este valor es similar al estilo de clase CS_HREDRAW
WVR_VREDRAW
0x0200
Se usa en combinación con cualquier otro valor, excepto WVR_VALIDRECTS, hace que la ventana se vuelva a dibujar completamente si el rectángulo del cliente cambia el tamaño verticalmente. Este valor es similar al estilo de clase CS_VREDRAW
WVR_REDRAW
0x0300
Este valor hace que se vuelva a dibujar toda la ventana. Es una combinación de valores de WVR_HREDRAW y WVR_VREDRAW .
WVR_VALIDRECTS
0x0400
Este valor indica que, al devolver de WM_NCCALCSIZE, los rectángulos especificados por los miembros rgrc[1] y rgrc[2] de la estructura NCCALCSIZE_PARAMS contienen rectángulos de área de origen y destino 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 en el 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 de área cliente más elaboradas, como centrar o conservar un subconjunto del área cliente.

 

Observaciones

La ventana se puede volver a dibujar, dependiendo de si se especifica el estilo de clase CS_HREDRAW o CS_VREDRAW. Este es el procesamiento predeterminado compatible con versiones anteriores de este mensaje por 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 el tamaño de la ventana, incluido el marco de la ventana. Esto quitará el marco de la ventana y subtítulo elementos 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 cliente mediante la función DwmExtendFrameIntoClientArea . Solo se quitará el marco estándar.

Requisitos

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

Consulte también

Referencia

DefWindowProc

MoveWindow

SetWindowPos

NCCALCSIZE_PARAMS

Conceptual

Windows

Otros recursos

RECT