Pregunta

Tengo una ventana por capas establecido en mi aplicación MFC. He creado mi propia derivación de CDialog que me permita personalizar las distintas partes de la forma en que se pronuncie la ventana. Todo funciona bien hasta hasta que comience a preocuparse por minimizar y maximizar.

Si hace clic en minimizar o maximizar la ventana y luego reacciona exactamente como era de esperar (es decir, exactamente como lo hace cuando NO se utiliza una ventana de capas). Sin embargo, cuando yo restaure la ventana algo muy extraño sucede.

El rectángulo cliente predeterminado para la ventana de mi prueba es 324x102. Cuando restauro del estado minimizado, por ejemplo, el CX y CY pasaron a OnSize es 994, 550. Pues si yo hago un GetClientRect (dentro de OnSize) este es el tamaño indicado por la ventana. Extrañamente, sin embargo si lo hago GetWindowRect consigo el tamaño correcto de vuelta (aunque, obviamente, incluyendo todos mis áreas que no son clientes).

¿Alguien tiene alguna idea de lo que está pasando aquí y, más importante, cómo puedo solucionarlo tal que GetClientRect reporta la información correcta?

Gracias de antemano!

¿Fue útil?

Solución

He llegado con una especie de truco para resolver este problema. En OnSize y OnMove hago caso de la (c) x y (c) y que recibo y resolver todo de una GetWindowRect. La aplicación ahora reacciona como se espera. He marcado el código con un comentario [HACK]. Esto parece muy extraño, sin embargo, me gustaría saber por qué ocurre esto.

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