Clique duas vezes no botão da barra de tarefas de uma janela minimizada ocupada ocupada, fazendo com que ela restaure seu tamanho não maximizado - por quê?

1

Estou usando o WinDirStat para verificar a unidade D: e a janela é um pouco lenta e não responde. Eu minimizei a janela já maximizada. Algum tempo depois, quero verificar o progresso e clico no botão da barra de tarefas do WinDirStat. Como ele não pode responder instantaneamente, me vejo clicando rapidamente no botão várias vezes (o que pode se tornar um clique duplo). Finalmente, a janela mostra, mas restaura automaticamente o tamanho não maximizado.

Veja a captura de tela: Minimize-oecliqueduasvezesnobotãodabarradetarefas(odestaque"81% D: - WinDirStat" antes do ícone "CH") faz com que ele se torne:

Isso também acontece com outros aplicativos, como o Firefox, o Visual Studio e até o Word, quando eles não respondem. Freqüentemente ter um Firefox não maximizado é especialmente irritante. Acabei de mascarar os nomes dos arquivos nas duas capturas de tela do Photoshop e cliquei várias vezes no botão da barra de tarefas quando ele estava começando. Então eu vi claramente que ele foi maximizado no começo e se tornou não maximizado da próxima vez.

Quando os aplicativos não estão ocupados, eles não têm o problema. O primeiro clique em um botão da barra de tarefas de uma janela minimizada o exibe e, se for um clique duplo, o segundo clique é ignorado. A janela não restaurará seu tamanho.

Por que a janela ocupada pode magicamente se tornar não maximizada? Como posso desativar o comportamento?

    
por jingyu9575 05.06.2014 / 13:01

1 resposta

0

Agora, acho que descobri o motivo, mas não tenho a menor ideia de como corrigi-lo.

Para uma janela maximizada minimizada (responsiva ou não), se eu clicar com o botão direito do mouse no botão da barra de tarefas e selecionar "Restaurar" duas vezes, a janela se tornará não minimizada e se tornará não maximizada. Isso pode ser o que está acontecendo na questão.

Se eu saí clique em um botão da barra de tarefas, o Explorer verificará o estado atual da janela. Se estiver minimizado, uma mensagem "Restaurar" será enviada para ele. Se estiver aparecendo, mas em segundo plano, será exibido. Se já estiver em primeiro plano, será minimizado.

Quando a janela minimizada é responsiva, clicar no botão da barra de tarefas a exibe. Se eu clicar novamente, o Explorer notará que a janela já está em primeiro plano e a minimizará novamente.

No entanto, quando a janela não responde, ela não responde à mensagem "Restaurar" e fica presa no estado minimizado. Se eu clicar no botão da barra de tarefas duas vezes, duas mensagens "Restaurar" ficarão na fila, já que o Explorer sempre verá a janela como minimizada. Quando a janela finalmente fica ativa, ela começa a processar as mensagens em espera. A primeira "Restauração" traz a janela para cima e a segunda restaura a janela para o estado não maximizado.

O problema subjacente é que "Minimized" e "Maximized" devem ser duas propriedades não relacionadas de uma janela, mas o Windows as mistura e usa o mesmo "Restore" ( SW_RESTORE ) para limpá-las.

Até agora não conheço nenhuma solução para corrigir o comportamento. Eu tentei monitorar esses "restaurações" (globalmente enganchando APIs como PostMessage e verificando se msg == WM_SYSCOMMAND ), sem sucesso.

    
por 22.05.2015 / 20:42