Mensagem WM_NCHITTEST
Enviado para uma janela com o objetivo de determinar qual parte dela corresponde a uma coordenada de tela específica. Isso pode acontecer, por exemplo, quando o cursor é movido, quando um botão do mouse é pressionado ou liberado ou em resposta a uma chamada para uma função como WindowFromPoint. Se o mouse não for capturado, a mensagem será enviada para a janela abaixo do cursor. Caso contrário, a mensagem será enviada para a janela que capturou o mouse.
Uma janela recebe essa mensagem por meio da sua função WindowProc.
#define WM_NCHITTEST 0x0084
Parâmetros
-
wParam
-
Este parâmetro não é usado.
-
lParam
-
A palavra de ordem inferior especifica a coordenada x do cursor. A coordenada é relativa ao canto superior esquerdo da tela.
A palavra de ordem superior especifica a coordenada Y do cursor. A coordenada é relativa ao canto superior esquerdo da tela.
Valor retornado
O valor retornado da função DefWindowProc é um dos valores a seguir, indicando a posição do ponto de acesso do cursor.
Valor/código retornado | Descrição |
---|---|
|
Na borda de uma janela que não tem uma borda de dimensionamento. |
|
Na borda horizontal inferior de uma janela redimensionável (o usuário pode clicar no mouse para redimensionar a janela verticalmente). |
|
No canto inferior esquerdo de uma borda de uma janela redimensionável (o usuário pode clicar no mouse para redimensionar a janela diagonalmente). |
|
No canto inferior direito de uma borda de uma janela redimensionável (o usuário pode clicar no mouse para redimensionar a janela diagonalmente). |
|
Em uma barra de título. |
|
Em uma área do cliente. |
|
Em um botão Fechar. |
|
Na tela de fundo ou em uma linha divisória entre janelas (o mesmo que HTNOWHERE, com a exceção de que a função DefWindowProc produz um som do sistema para indicar um erro). |
|
Em uma caixa de tamanho (o mesmo que HTSIZE). |
|
Em um botão Ajuda. |
|
Em uma barra de rolagem horizontal. |
|
Na borda esquerda de uma janela redimensionável (o usuário pode clicar no mouse para redimensionar a janela horizontalmente). |
|
Em um menu. |
|
Em um botão Maximizar. |
|
Em um botão Minimizar. |
|
Na tela de fundo ou em uma linha divisória entre as janelas. |
|
Em um botão Minimizar. |
|
Na borda direita de uma janela redimensionável (o usuário pode clicar no mouse para redimensionar a janela horizontalmente). |
|
Em uma caixa de tamanho (o mesmo que HTGROWBOX). |
|
Em um menu de janela ou em um botão Fechar de uma janela filho. |
|
Na borda horizontal superior de uma janela. |
|
No canto superior esquerdo de uma borda da janela. |
|
No canto superior direito de uma borda da janela. |
|
Em uma janela atualmente coberta por outra janela no mesmo thread (a mensagem será enviada para janelas subjacentes no mesmo thread até que uma delas retorne um código que não seja HTTRANSPARENT). |
|
Na barra de rolagem vertical. |
|
Em um botão Maximizar. |
Comentários
Use o seguinte código para obter a posição horizontal e vertical:
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
Conforme observado acima, a coordenada x está na ordem inferior curto do valor retornado; a coordenada y está na ordem superior curto (ambos representam valores assinados, porque podem usar valores negativos em sistemas com vários monitores). Se o valor retornado for atribuído a uma variável, você poderá usar a macro MAKEPOINTS para obter uma estrutura POINTS do valor retornado. Você também pode usar a macro GET_X_LPARAM ou GET_Y_LPARAM para extrair a coordenada X ou Y.
Importante
Não use as macros LOWORD ou HIWORD para extrair as coordenadas x e y da posição do cursor, porque essas macros retornam resultados incorretos em sistemas com vários monitores. Sistemas com vários monitores podem ter coordenadas X e Y negativas, e LOWORD e HIWORD tratam as coordenadas como quantidades sem sinal.
Windows Vista: ao criar quadros personalizados que incluem os botões de legenda padrão, essa mensagem deve primeiro ser passada para a função DwmDefWindowProc. Isso permite que o DWM (Gerenciador de Janelas da Área de Trabalho) forneça teste de clique para os botões de legendas. Se DwmDefWindowProc não manipular a mensagem, um processamento adicional de WM_NCHITTEST poderá ser necessário.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte |
Windows 2000 Professional [somente aplicativos para desktop] |
Servidor mínimo com suporte |
Windows 2000 Server [somente aplicativos da área de trabalho] |
Cabeçalho |
|
Confira também
-
Referência
-
Conceitual
-
Outros recursos