2009-09-21 74 views
0

我在我的MFC應用程序中設置了一個分層窗口。我已經建立了我自己的CDialog派生,以允許我定製窗口呈現方式的各個部分。一切正常,直到我開始擔心最小化和最大化。UpdateLayeredWindow,SIZE_RESTORED和GetClientRect問題

如果您單擊最小化或最大化,那麼窗口的反應與您預期的完全相同(即完全像不使用分層窗口時那樣)。但是,當我恢復窗口時發生了一些非常奇怪的事情。

我的測試窗口的默認客戶端矩形是324x102。例如,當我從最小化狀態恢復時,傳遞給OnSize的cx和cy是994,550。如果我然後在OnSize中執行GetClientRect,則這是窗口報告的大小。奇怪的是,雖然如果我做GetWindowRect我得到正確的大小(儘管顯然包括我所有的非客戶區)。

有沒有人知道這裏發生了什麼,更重要的是,我如何解決這個問題,讓GetClientRect報告正確的信息?

在此先感謝!

回答

1

我想出了一種解決這個問題的方法。在OnSize和OnMove中,我忽略了我接收到的(c)x和(c)y,並從GetWindowRect中處理所有內容。應用程序現在按預期做出反應。我用[HACK]註釋標記了代碼。這聽起來很奇怪,但我很想聽聽爲什麼會發生這種情況。