Auto-Hide barra de tarefas não aparece quando meu aplicativo está maximizado

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

  •  02-07-2019
  •  | 
  •  

Pergunta

Meu aplicativo desenha todas as suas próprias bordas das janelas e decorações. Ele funciona muito bem com barras de tarefas do Windows que estão definidos para auto-ocultar, exceto quando minha janela do aplicativo é maximizada. A barra de tarefas não vai "roll up". Ele vai se comportar normalmente se eu tiver o aplicativo não maximizada, mesmo quando dimensionado todo o caminho até a parte inferior da tela. Ele ainda funciona normalmente se eu redimensionar a janela para ocupar toda a tela (como se fosse maximizado).

Foi útil?

Solução

Eu encontrei o problema. Meu aplicativo estava lidando com a mensagem WM_GETMINMAXINFO, e foi substituindo os valores no parâmetro registro MINMAXINFO. Os valores que estavam na ficha foram insuflados por 7 (largura da borda) a resolução de pixel tela. Isso faz sentido em que quando maximizado, ele empurra as bordas da janela para além da parte visível da tela. Ele também definir o ptMaxPosition (ponto de que a origem da janela está definido para quando maximizada) a -7, -7. Meu aplicativo foi definindo que para 0,0, ea altura máxima e largura para exatamente o tamanho resolução de tela (não inflado). Não sei por que isso foi feito; ele foi escrito por um predecessor. Se eu comentar esse código e não modificar a estrutura MINMAXINFO, as auto-ocultar obras.

Quanto ao porquê, eu não sou inteiramente certo. É possível que a detecção por aparecendo uma "autohidden" barra de tarefas é viciado no mecanismo para lidar com mensagens WM_MOUSEMOVE, e não para WM_NCMOUSEMOVE. Com a minha candidatura causando a maximizar a estacionar o meu direito de fronteira na parte inferior da tela, eu teria sido gerando eventos WM_NCMOUSEMOVE; com o MINMAXINFO deixado sozinho, eu teria sido gerando WM_MOUSEMOVE.

Outras dicas

Esta é dependente se 'Manter a barra de tarefas sobre as outras janelas' está marcada nas propriedades da barra de tarefas. Se for marcada, então a barra de tarefas será exibida.

Mas não fique tentado a alterar programaticamente essa configuração em uma máquina de usuários finais apenas para atender às suas necessidades, é considerado prática rude e mal. Seu aplicativo deve caber qualquer ambiente fica implantado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top