Pergunta

Eu tenho uma janela em camadas configurar no meu aplicativo MFC. Eu configurei minha própria derivação de CDialog para permitir-me para personalizar várias partes como a janela é processado. Tudo funciona bem mesmo até eu começar a se preocupar minimizar e maximizar.

Se você clicar em minimizar ou maximizar, em seguida, as reage janela exatamente como você esperaria (ou seja, exatamente como faz quando não estiver usando uma janela em camadas). No entanto, quando eu restaurar a janela algo muito estranho acontece.

O retângulo cliente padrão para minha janela teste é 324x102. Quando eu restaurar a partir do estado minimizado, por exemplo, o cx e cy passado para OnSize é 994, 550. Se eu, em seguida, fazer uma GetClientRect (dentro OnSize), este é o tamanho relatado para a janela. Estranhamente, embora se eu fizer GetWindowRect recebo a volta tamanho correto (embora, obviamente, incluindo todas as minhas áreas não-cliente).

Alguém tem alguma idéia do que está acontecendo aqui e, mais importante, como posso corrigi-lo de tal forma que GetClientRect relata a informação correta?

Agradecemos antecipadamente!

Foi útil?

Solução

Eu vim com uma espécie de truque para resolver este problema. Em OnSize e OnMove eu ignorar o (c) x e (c) y que eu receber e resolver tudo de uma GetWindowRect. A aplicação agora reage da forma esperada. Eu marquei o código com um [Dica] comentários. Isso parece muito estranho, porém, eu gostaria de saber por que isso está acontecendo.

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