c# - una - formulario windows form
Cómo obtener las coordenadas del área del cliente de la ventana (5)
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?
La relación entre la ventana rect (con bordes, etc.) y el cliente rect (bordes interiores) se encuentra más fácilmente utilizando 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.
Puede usar ClientToScreen para obtener las coordenadas del punto superior izquierdo (0,0) en las coordenadas de la pantalla. El RECT devuelto por GetClientRect será apropiado para obtener la esquina inferior derecha (simplemente agregue al PUNTO establecido por ClientToScreen).
También puede usar la función MapWindowPoints para convertir una RECT completa en coordenadas de pantalla a la vez.
Use ClientToScreen para convertir las coordenadas del cliente en coordenadas de pantalla. La ventana rect (GetWindowRect) ya está en las coordenadas de la pantalla e incluye el área no cliente (bordes, leyenda, etc.)
Y si está trabajando con WinForms, puede usar PointToScreen en lugar de ClientToScreen para la solución propuesta por Reed Copsey.