Sempre que ocorre um evento de mouse, o sistema envia uma mensagem WM_NCHITTEST a qualquer janela que contém o ponto de acesso do cursor ou a janela que tenha capturado o mouse. O sistema usa esta mensagem para determinar se deseja enviar um cliente mensagem de mouse de área área ou não cliente. Um aplicativo que deve receber mensagens de botão do mouse e movimento do mouse deve transmitir a mensagem WM_NCHITTEST para o DefWindowProc função.
O lParam parâmetro da mensagem WM_NCHITTEST contém as coordenadas de tela do ponto de acesso do cursor. O DefWindowProc função examina as coordenadas e retorna um valor de teste de impacto que identifica a localização do ponto ativo. O valor de teste de impacto pode ser uma dos seguinte valores.
| Valor | Localização do ponto de acesso |
|---|---|
| HTBORDER | Na borda de uma janela que não tem uma borda de dimensionamento |
| HTBOTTOM | In a borda horizontal inferior de uma janela |
| HTBOTTOMLEFT | No canto inferior esquerdo de uma borda de janela |
| HTBOTTOMRIGHT | No canto inferior direito de uma borda de janela |
| HTCAPTION | Em uma barra de título |
| HTCLIENT | Em uma área do cliente |
| HTCLOSE | No botão Fechar. |
| HTERRORNO | O plano de fundo da tela ou em uma linha divisória entre as janelas (mesmo como HTNOWHERE, exceto que o DefWindowProc função produz um bipe do sistema para indicar um erro) |
| HTGROWBOX | Em uma caixa de tamanho (o mesmo que HTSIZE) |
| HTHELP | No botão de ajuda. |
| HTHSCROLL | Em uma barra de rolagem horizontal |
| HTLEFT | Na borda esquerda de uma janela |
| HTMENU | Em um menu |
| HTMAXBUTTON | No botão maximizar. |
| HTMINBUTTON | No botão minimizar. |
| HTNOWHERE | O plano de fundo da tela ou em uma linha divisória entre as janelas |
| HTREDUCE | Em um botão de minimizar |
| HTRIGHT | No direito borda de uma janela |
| HTSIZE | Em uma caixa de tamanho (mesmo que HTGROWBOX) |
| HTSYSMENU | Em um menu do sistema ou em um botão fechar em uma janela filho |
| HTTOP | In a borda horizontal superior de uma janela |
| HTTOPLEFT | No canto superior esquerdo de uma borda de janela |
| HTTOPRIGHT | No canto superior direito de uma borda de janela |
| HTTRANSPARENT | Em uma janela atualmente coberta por outra janela no mesmo thread |
| HTVSCROLL | Na barra de rolagem vertical |
| HTZOOM | Em um botão de maximizar |
Se o cursor estiver na área de cliente de uma janela, DefWindowProc retorna o valor de teste de impacto HTCLIENT para o procedimento janela. Quando o procedimento de janela retorna este código para o sistema, o sistema converte as coordenadas de tela do ponto de acesso do cursor em coordenadas do cliente e, em seguida, envia o cliente apropriado mensagem de mouse de área.
O DefWindowProc função retorna um dos outros valores de teste de impacto, quando o ponto de acesso do cursor estiver na área de não cliente de uma janela. Quando o procedimento de janela retorna um destes valores de teste de impacto, o sistema envia um não cliente área do mouse mensagem, colocando o valor de teste de impacto na wParam parâmetro da mensagem e as coordenadas do cursor na lParam parâmetro.