Puedo obtener las coordenadas de un área completa de Windows y las coordenadas del área del cliente usando las llamadas GetClientRect y GetWindowRect Win32. Mi problema es que GetClientRect siempre devuelve 0,0 para la esquina superior izquierda. ¿Cómo averiguo cuál es la región del cliente real en relación con la ventana rect?Cómo obtener las coordenadas del área del cliente de la ventana
Respuesta
Puede usar ClientToScreen para obtener las coordenadas del punto superior izquierdo (0,0) en la pantalla coordenadas El RECT devuelto por GetClientRect será apropiado para obtener la esquina inferior derecha (simplemente agregue al PUNTO establecido por ClientToScreen).
Use ClientToScreen para convertir las coordenadas del cliente en coordenadas de pantalla. La ventana rect (GetWindowRect) ya está en coordenadas de pantalla e incluye el área no cliente (bordes, título, etc.)
y esta era la parte crucial que me faltaba; * e incluye el área que no es cliente (bordes, leyenda, etc.) * ¡Gracias! – nspire
También puede usar la función MapWindowPoints para convertir una RECT completa en coordenadas de pantalla a la vez.
Esto se encuentra en 'Control.RectangleToScreen' y su primo,' Control.RectangleToClient'. –
Y si está trabajando con WinForms, puede usar PointToScreen en lugar de ClientToScreen para la solución propuesta por Reed Copsey.
Me gusta iyt better than API function.thx. – ChadD
La relación entre la ventana rect (con bordes, etc.) y el cliente rect (bordes interiores) se encuentra más fácilmente usando AdjustWindowRectEx(). Obtenga el estilo de ventana y el estilo ex de la ventana y llame a esa función para ver cuánto borde hay en cada lado.
- 1. Obtener las coordenadas del cursor en raphael
- 2. Cómo encontrar las coordenadas del centro x del elemento y la compensación de la ventana relacionada
- 3. Obteniendo todas las coordenadas del polígono del área específica de la imagen?
- 4. Cómo establecer el tamaño del área No cliente de una ventana Win32 (nativa)
- 5. JFreeChart obtener coordenadas del mouse
- 6. cómo obtener las coordenadas del centro del área vista en google maps usando Google Maps JavaScript API v3
- 7. ¿Cómo implemento arrastrando una ventana usando su área de cliente?
- 8. Transformar las coordenadas del oyente del mouse en las coordenadas del gráfico
- 9. ¿Cómo obtener la zona horaria del cliente?
- 10. ¿Cómo encontrar las coordenadas en la etiqueta de área?
- 11. ¿Cómo convertir las coordenadas de la vista de imagen a las coordenadas del mapa de bits?
- 12. ¿Cómo se convierten las coordenadas del mundo a las coordenadas de la cámara?
- 13. Posible obtener las coordenadas actuales del mouse con Javascript?
- 14. ¿Cómo obtener las coordenadas del final del texto seleccionado con javascript?
- 15. ¿Cómo obtener un tamaño de cliente de ventana de WPF?
- 16. no puede recuperar correctamente las coordenadas del ratón después de cambiar el tamaño de una ventana
- 17. Process.Start() obtener errores de la ventana del símbolo del sistema
- 18. Obtener las coordenadas del centro de la página en tabletas usando JavaScript
- 19. ¿Cómo traduzco correctamente las coordenadas de píxeles a las coordenadas del lienzo en Android?
- 20. ¿Cómo obtener la dirección IP del cliente de escritorio remoto?
- 21. ¿Cómo obtener las coordenadas de ToolStripButton?
- 22. Coordenadas del mouse relativas al fotograma
- 23. Área de pantalla vs rectángulo del área de trabajo
- 24. Transparencia de ventana WPF (incluido el área no cliente)
- 25. ¿Cómo debo traducir las coordenadas del espacio de la pantalla a las coordenadas del espacio de la imagen en un PictureBox de WinForms?
- 26. ¿Cómo obtener la posición del cursor relativa a la ventana en Mac OS X?
- 27. ¿Cómo obtener la fecha y hora del cliente en ASP.NET?
- 28. Cómo obtener la dirección IP del cliente usando jQuery
- 29. WICKET: cómo obtener la dirección/ip del cliente
- 30. cómo obtener la altura exacta del cuerpo de la ventana del navegador web?
Si está utilizando WinForms (y según sus comentarios a continuación, parece que lo es), no debe utilizar PInvoke para esto. Use 'Control.ClientRectangle' y' Control.Bounds'. –
Necesito usar PInvoke porque obtengo las coordenadas de una ventana en otra aplicación. – Jeremy