La barra de tareas Ocultar automáticamente no aparece cuando mi aplicación está maximizada

StackOverflow https://stackoverflow.com/questions/137005

  •  02-07-2019
  •  | 
  •  

Pregunta

Mi aplicación dibuja todos sus propios bordes de ventana y decoraciones. Funciona bien con las barras de tareas de Windows que están configuradas para ocultarse automáticamente, excepto cuando la ventana de mi aplicación está maximizada. La barra de tareas no se "enrolla". Se comportará normalmente si la aplicación no está maximizada, incluso cuando esté dimensionada hasta el final de la pantalla. Incluso funciona normalmente si simplemente cambio el tamaño de la ventana para ocupar toda la pantalla (como si estuviera maximizada).

¿Fue útil?

Solución

Encontré el problema. Mi aplicación estaba manejando el mensaje WM_GETMINMAXINFO, y estaba anulando los valores en el parámetro MINMAXINFO registro. Los valores que estaban en el registro fueron inflados por 7 (ancho de borde) la resolución de píxeles de la pantalla. Eso tiene sentido porque cuando se maximiza, empuja los bordes de la ventana más allá de la parte visible de la pantalla. También establece el ptMaxPosition (punto en el que se establece el origen de la ventana cuando está maximizado) a -7, -7. Mi aplicación estaba configurando eso en 0,0, y la altura y anchura máximas para exactamente el tamaño de resolución de la pantalla (no inflado). No estoy seguro de por qué se hizo esto; Fue escrito por un predecesor. Si comento ese código y no modifico la estructura MINMAXINFO, la función Ocultar automáticamente funciona.

En cuanto a por qué, no estoy del todo seguro. Es posible que la detección para que aparezca un " autohidden " la barra de tareas está conectada al mecanismo para manejar mensajes WM_MOUSEMOVE, y no para WM_NCMOUSEMOVE. Con mi aplicación causando que Maximize aparque mi borde en la parte inferior de la pantalla, habría estado generando eventos WM_NCMOUSEMOVE; con el MINMAXINFO solo, habría estado generando WM_MOUSEMOVE.

Otros consejos

Esto depende de si la opción 'Mantener la barra de tareas sobre otras ventanas' está marcada en las propiedades de la barra de tareas. Si está marcado, aparecerá la barra de tareas.

Pero no tenga la tentación de alterar programáticamente esta configuración en la máquina de un usuario final solo para satisfacer sus necesidades, se considera una práctica grosera y mala. Su aplicación debe adaptarse al entorno en el que se implementa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top