none
¿Como puedo obtener la altura de la barra de tareas de Windows o cómo puedo hacer lo que describo? RRS feed

  • Pregunta

  • Quiero ampliar la altura del formulario a toda la altura disponible, de manera que el tope superior quede en cero y el tope inferior justo encima de la barra de tareas de Windows, pero que el ancho no sea el ancho de la pantalla sino cualquier otro ancho menor.

    En otras palabras quiero imitar el comportamiento de una ventana de windows cuando se pasa el mouse sobre el borde superior y se arrastra hasta el tope superior del escritorio, la altura de esta se amplifica en el espacio máximo pero el ancho se mantiene igual.


    • Editado James-2016 viernes, 18 de marzo de 2016 8:44
    viernes, 18 de marzo de 2016 8:43

Respuestas

  • Creo que es considerablemente más complejo de lo que piensas. ¿Qué pasa si el usuario ha configurado la barra de tareas para que aparezca en vertical en un lado de la pantalla en lugar de la parte inferior? ¿Qué pasa si tiene varios monitores -- con distinta resolución, y la barra de tareas presente en unos sí y otros no? ¿Qué haces con el escalado de pantalla si el usuario tiene puesta la resolución (por ejemplo) al 200%? ¿Tienes que contar los píxels antes o después de escalar?

    Seguro que todo ello puede ser resuelto, pero necesitas considerar el problema con más detenimiento.

    Puedes sacar toda la información necesaria llamando mediante P/Invoke a la API GetSystemMetrics; en particular fíjate en la opción SM_CYFULLSCREEN:

    https://msdn.microsoft.com/en-us/library/windows/desktop/ms724385(v=vs.85).aspx

    pero como puedes ver, se pueden complicar las cosas una vez que tienes en cuenta todos los factores que pueden intervenir en el caso más general.

    • Marcado como respuesta James-2016 viernes, 18 de marzo de 2016 22:44
    viernes, 18 de marzo de 2016 16:48

Todas las respuestas

  • Creo que es considerablemente más complejo de lo que piensas. ¿Qué pasa si el usuario ha configurado la barra de tareas para que aparezca en vertical en un lado de la pantalla en lugar de la parte inferior? ¿Qué pasa si tiene varios monitores -- con distinta resolución, y la barra de tareas presente en unos sí y otros no? ¿Qué haces con el escalado de pantalla si el usuario tiene puesta la resolución (por ejemplo) al 200%? ¿Tienes que contar los píxels antes o después de escalar?

    Seguro que todo ello puede ser resuelto, pero necesitas considerar el problema con más detenimiento.

    Puedes sacar toda la información necesaria llamando mediante P/Invoke a la API GetSystemMetrics; en particular fíjate en la opción SM_CYFULLSCREEN:

    https://msdn.microsoft.com/en-us/library/windows/desktop/ms724385(v=vs.85).aspx

    pero como puedes ver, se pueden complicar las cosas una vez que tienes en cuenta todos los factores que pueden intervenir en el caso más general.

    • Marcado como respuesta James-2016 viernes, 18 de marzo de 2016 22:44
    viernes, 18 de marzo de 2016 16:48
  • Gracias por la respuesta y por el enlace, mm veo que tiene sus complicaciones.
    viernes, 18 de marzo de 2016 22:44