Mensaje WM_NCHITTEST
Se envía a una ventana para determinar qué parte de esta corresponde a una coordenada de pantalla determinada. Esto puede ocurrir, por ejemplo, cuando el cursor se mueve, cuando se presiona o suelta un botón del mouse, o en respuesta a una llamada a una función como WindowFromPoint. Si no se captura el mouse, el mensaje se envía a la ventana debajo del cursor. De lo contrario, el mensaje se envía a la ventana que ha capturado el mouse.
Una ventana recibe este mensaje mediante la función WindowProc.
#define WM_NCHITTEST 0x0084
Parámetros
-
wParam
-
Este parámetro no se utiliza.
-
lParam
-
La palabra de orden inferior especifica la coordenada X del cursor. La coordenada es relativa a la esquina superior izquierda de la pantalla.
La palabra de orden superior especifica la coordenada Y del cursor. La coordenada es relativa a la esquina superior izquierda de la pantalla.
Valor devuelto
El valor devuelto de la función DefWindowProc es uno de los siguientes valores, que indica la posición del punto activo del cursor.
Código/valor de retorno | Descripción |
---|---|
|
En el borde de una ventana que no tiene un borde de dimensionamiento de tamaño. |
|
En el borde inferior horizontal de una ventana de tamaño variable (el usuario puede hacer clic en el mouse para cambiar el tamaño de la ventana verticalmente). |
|
En la esquina inferior izquierda de un borde de una ventana de tamaño variable (el usuario puede hacer clic en el mouse para cambiar el tamaño de la ventana en diagonal). |
|
En la esquina inferior derecha de un borde de una ventana redimensionable (el usuario puede hacer clic en el mouse para cambiar el tamaño de la ventana en diagonal). |
|
En una barra de título. |
|
En un área de cliente |
|
En un botón Cerrar. |
|
En el fondo de la pantalla o en una línea divisoria entre ventanas (igual que HTNOWHERE, excepto que la función DefWindowProc genere un pitido del sistema para indicar un error). |
|
En un cuadro de tamaño (igual que HTSIZE). |
|
En un botón Ayuda. |
|
Barra de desplazamiento horizontal. |
|
En el borde izquierdo de una ventana de tamaño redimensionable (el usuario puede hacer clic en el mouse para cambiar el tamaño de la ventana horizontalmente). |
|
En un menú. |
|
En un botón Maximizar. |
|
En un botón Minimizar. |
|
En el fondo de la pantalla o en una línea divisoria entre ventanas. |
|
En un botón Minimizar. |
|
En el borde derecho de una ventana de tamaño redimensionable (el usuario puede hacer clic en el mouse para cambiar el tamaño de la ventana horizontalmente). |
|
En un cuadro de tamaño (igual que HTGROWBOX). |
|
En un menú de ventana o en un botón Cerrar de una ventana secundaria. |
|
En el borde superior horizontal de una ventana. |
|
En la esquina superior izquierda de un borde de ventana. |
|
En la esquina superior derecha de un borde de ventana. |
|
En una ventana cubierta por otra ventana del mismo subproceso (el mensaje se enviará a las ventanas subyacentes en el mismo subproceso hasta que uno de ellos devuelva un código que no sea HTTRANSPARENT). |
|
En la barra de desplazamiento vertical. |
|
En un botón Maximizar. |
Comentarios
Use el código siguiente para obtener la posición horizontal y vertical:
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
Como se indicó anteriormente, la coordenada X está en el entero short de orden inferior del valor devuelto; la coordenada Y está en el entero short de orden superior (ambos representan valores con signo porque pueden tomar valores negativos en sistemas con varios monitores). Si el valor devuelto se asigna a una variable, puede usar la macro MAKEPOINTS para obtener una estructura POINTS a partir del valor devuelto. También puede usar las macros GET_X_LPARAM o GET_Y_LPARAM para extraer la coordenada X o Y.
Importante
No use las macros LOWORD ni HIWORD para extraer las coordenadas X e Y de la posición del cursor porque estas macros devuelven resultados incorrectos en sistemas con varios monitores. Los sistemas con varios monitores pueden tener coordenadas x e y negativas, y LOWORD y HIWORD tratan las coordenadas como cantidades sin signo.
Windows Vista: Al crear marcos personalizados que incluyan los botones de subtítulo estándar, este mensaje debe pasarse primero a la función DwmDefWindowProc. Esto permite que el Administrador de ventanas de escritorio (DWM) proporcione pruebas de posicionamiento para los botones de subtítulos. Si DwmDefWindowProc no controla el mensaje, es posible que sea necesario procesar más WM_NCHITTEST.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo compatible |
Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible |
Windows 2000 Server [solo aplicaciones de escritorio] |
Encabezado |
|
Consulte también
-
Referencia
-
Conceptual
-
Otros recursos