WM_NCCALCSIZE mensagem

Enviado quando o tamanho e a posição da área de cliente de uma janela devem ser calculados. Ao processar essa mensagem, um aplicativo pode controlar o conteúdo da área do cliente da janela quando o tamanho ou a posição da janela é alterado.

Uma janela recebe essa mensagem por meio da função WindowProc.

#define WM_NCCALCSIZE                   0x0083

Parâmetros

wParam

Se wParam for TRUE, ele especificará que o aplicativo deve indicar qual parte da área do cliente contém informações válidas. O sistema copia as informações válidas para a área especificada dentro da nova área de cliente.

Se wParam for FALSE, o aplicativo não precisará indicar a parte válida da área do cliente.

lParam

Se wParam for TRUE, lParam apontará para uma estrutura NCCALCSIZE_PARAMS que contém informações que um aplicativo pode usar para calcular o novo tamanho e a posição do retângulo do cliente.

Se wParam for FALSE, lParam apontará para uma estrutura RECT . Na entrada, a estrutura contém o retângulo de janela proposto para a janela. Na saída, a estrutura deve conter as coordenadas de tela da área de cliente da janela correspondente.

Retornar valor

Tipo: LRESULT

Se o parâmetro wParam for FALSE, o aplicativo deverá retornar zero.

Se wParam for TRUE, o aplicativo deverá retornar zero ou uma combinação dos valores a seguir.

Se wParam for TRUE e um aplicativo retornar zero, a área de cliente antiga será preservada e será alinhada com o canto superior esquerdo da nova área de cliente.

Código/valor de retorno Descrição
WVR_ALIGNTOP
0x0010
Especifica que a área do cliente da janela deve ser preservada e alinhada com a parte superior da nova posição da janela. Por exemplo, para alinhar a área do cliente ao canto superior esquerdo, retorne os valores WVR_ALIGNTOP e WVR_ALIGNLEFT .
WVR_ALIGNRIGHT
0x0080
Especifica que a área do cliente da janela deve ser preservada e alinhada com o lado direito da nova posição da janela. Por exemplo, para alinhar a área do cliente ao canto inferior direito, retorne os valores WVR_ALIGNRIGHT e WVR_ALIGNBOTTOM.
WVR_ALIGNLEFT
0x0020
Especifica que a área do cliente da janela deve ser preservada e alinhada com o lado esquerdo da nova posição da janela. Por exemplo, para alinhar a área do cliente ao canto inferior esquerdo, retorne os valores WVR_ALIGNLEFT e WVR_ALIGNBOTTOM .
WVR_ALIGNBOTTOM
0x0040
Especifica que a área do cliente da janela deve ser preservada e alinhada com a parte inferior da nova posição da janela. Por exemplo, para alinhar a área do cliente ao canto superior esquerdo, retorne os valores WVR_ALIGNTOP e WVR_ALIGNLEFT .
WVR_HREDRAW
0x0100
Usado em combinação com qualquer outro valor, exceto WVR_VALIDRECTS, fará com que a janela seja completamente redesenhada se o retângulo do cliente mudar de tamanho horizontalmente. Esse valor é semelhante a CS_HREDRAW estilo de classe
WVR_VREDRAW
0x0200
Usado em combinação com qualquer outro valor, exceto WVR_VALIDRECTS, fará com que a janela seja completamente redesenhada se o retângulo do cliente mudar de tamanho verticalmente. Esse valor é semelhante a CS_VREDRAW estilo de classe
WVR_REDRAW
0x0300
Esse valor faz com que toda a janela seja redesenhada. É uma combinação de valores WVR_HREDRAW e WVR_VREDRAW .
WVR_VALIDRECTS
0x0400
Esse valor indica que, após o retorno de WM_NCCALCSIZE, os retângulos especificados pelos membros rgrc[1] e rgrc[2] da estrutura NCCALCSIZE_PARAMS contêm retângulos de área de origem e de destino válidos, respectivamente. O sistema combina esses retângulos para calcular a área da janela a ser preservada. O sistema copia qualquer parte da imagem da janela que esteja dentro do retângulo de origem e corta a imagem para o retângulo de destino. Ambos os retângulos estão em coordenadas relativas ao pai ou relativas à tela. Esse sinalizador não pode ser combinado com nenhum outro sinalizador.
Esse valor retornado permite que um aplicativo implemente estratégias mais elaboradas de preservação da área do cliente, como centralizar ou preservar um subconjunto da área do cliente.

 

Comentários

A janela pode ser redesenhada, dependendo se o estilo de classe CS_HREDRAW ou CS_VREDRAW é especificado. Esse é o processamento padrão compatível com versões anteriores dessa mensagem pela função DefWindowProc (além do cálculo de retângulo do cliente usual descrito na tabela anterior).

Quando wParam for TRUE, simplesmente retornar 0 sem processar os retângulos NCCALCSIZE_PARAMS fará com que a área do cliente seja redimensionada para o tamanho da janela, incluindo o quadro de janela. Isso removerá o quadro da janela e legenda itens da janela, deixando apenas a área do cliente exibida.

A partir do Windows Vista, remover o quadro padrão simplesmente retornando 0 quando o wParam é TRUE não afeta quadros estendidos para a área do cliente usando a função DwmExtendFrameIntoClientArea . Somente o quadro padrão será removido.

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho
Winuser.h (inclui Windows.h)

Confira também

Referência

DefWindowProc

Movewindow

Setwindowpos

NCCALCSIZE_PARAMS

Conceitual

Windows

Outros recursos

RECT