我有一个分层的窗口在我的MFC应用程序设置。我已经设置了我自己的CDialog的派生让我定制的窗口是如何呈现的各个部分。直到我开始担心最小化和最大化,一切工作正常权利了。

如果您点击最小化或最大化,则窗口正好反应正如你所期望(即正是因为它不使用分层的窗口时一样)。然而,当我恢复窗口的东西很奇怪的情况发生。

为我的测试窗口的默认客户端的矩形是324x102。当我从最小化状态恢复,例如,Cx和Cy传递给筛上部分是994,550。如果我那么做了GetClientRect(内筛上部分),这是报告的窗口大小。古怪,但如果我这样做GetWindowRect我得到正确的尺寸后部(虽然很明显,包括我所有的非客户端区域)。

没有任何人有任何想法是怎么回事,更重要的是,我怎么能解决这个问题,使得GetClientRect报告正确的信息?

提前感谢!

有帮助吗?

解决方案

我已经想出了一种黑客来解决这个问题。在筛上部分和OnMove我忽略了(C)x和(C)Y,我接收和处理来自GetWindowRect安排好一切。现在,应用程序反应如预期。我已经标有[HACK]注释中的代码。这似乎很奇怪,虽然,我很想听听为什么发生这种情况。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top