我想用MFC自繪一個窗口的標題欄。所以我重寫了CMainFrame的OnNcPaint()方法。一切似乎都沒問題,直到我點擊控制菜單中的項目以使其最小化或最大化。在最小化或最大化過程中,我可以看到原始標題欄出現。我不知道爲什麼會發生這種情況。也許有一些消息我沒有在這個過程中處理?需要你的幫助。非常感謝!在窗口最小化或最大化的過程中處理什麼信息?
3
A
回答
0
您可以使用Spy ++查看窗口收到的消息。我對OnSize的模糊記憶早於我預期的一些消息。
2
期間最小化/最大化過程?聽起來像最小/最大動畫。您可以通過「我的電腦」>「屬性」>「高級」>(性能)設置禁用動畫來驗證此情況。
至於標題問題,你會得到WM_SIZE。看看CWnd::OnSize的文檔。
CMyDialog::OnSize(UINT nType, int cx, int cy)
{
switch (nType)
{
case SIZE_MAXIMIZED:
// window was maximized
break;
case SIZE_MINIMIZED:
// window was minimized
break;
case SIZE_RESTORED:
// misleading - this occurs when restored from minimized/maximized AND
// for normal size operations when already restored
break;
default:
// you could also deal with SIZE_MAXHIDE and SIZE_MAXSHOW
// but rarely need to
break;
}
}
0
之前調用了OnShow。篩上部分被稱爲後..
我覺得值是SW_MAXIMIZE
和SW_MINIMIZE
..
還有一個辦法讓它這樣你的應用程序不關心Windows中的動畫設置。
當最小化時,將您的應用程序添加到系統托盤中是一個有意思的事情,它非常適合於繪製。我使用它已經有好幾年了,但如果你能找到它,你就會變成金。
0
你說的是窗口動畫,對吧?窗口顯示從目前的大小和位置「增長」或「收縮」到最大化的大小或任務欄。
該動畫獨立於窗口的外觀執行。您可以撥打DrawAnimatedRects
API function自行觸發動畫。它只是根據當前的顯示設置繪製一個正常的標題欄。
請注意,具有自定義繪製標題欄的其他窗口的行爲方式相同。例如,看看Office的各種版本。在最小化或最大化時,繪製Windows標題欄,而不是客戶標題欄。調整不佔用全屏幕的窗口時,您也可以看到異常現象。例如,當最大化Hearts遊戲時,動畫顯示窗口擴展到整個屏幕的寬度,但是當動畫結束時,窗口變窄(但仍然是最大化)。
所以,回答你的問題,沒有消息發送。調整大小的動畫是由窗口管理器執行的,沒有任何協助或參與調整窗口的大小。就您的程序而言,窗口直接從其原始大小變爲新的大小。
相關問題
- 1. 禁用窗口最大化/最小化
- 2. 用於最小化和最大化窗口的事件處理程序
- 3. 如何在最小化窗口後最大化窗口
- 4. 獲取最大化最小化窗口的窗口位置
- 5. 使用SDL處理最大化窗口
- 6. 窗口最大化最大化
- 7. 從窗口中刪除最小化/最大化按鈕,OpenTK
- 8. 更改窗口圖標的最小化,關閉並最大化
- 9. 窗體在關閉,最小化或最大化時掛起
- 10. 檢查當前最小化窗口在最小化時是處於最大化還是正常狀態
- 11. Flex:調整最大化窗口的恢復窗口的大小
- 12. 瀏覽器窗口最小化/最大化事件
- 13. Python-Selenium-Chrome最小化窗口本身是最大化
- 14. Qt C++最小化和最大化窗口
- 15. 使用Javascript最大化/最小化檢測瀏覽器窗口
- 16. WPF窗口沒有最小化/最大化
- 17. 劍道窗口最小化和最大化
- 18. 如何使用Addon SDK跟蹤窗口最小化/最大化?
- 19. 如何最小化窗口使窗口應用程序中使用快捷鍵最大化窗口使用C#?
- 20. Chrome打包應用程序窗口,當我最小化時自動調整大小 - 然後最大化窗口
- 21. 如何使用最小化/最大化窗口控件顯示Qt.Tool窗口?
- 22. 如何讓子窗口最小化和最大化與主窗口
- 23. 最小化Outlook窗口
- 24. 如何最小化窗口?
- 25. 最小化Tk窗口
- 26. JButton最小化窗口(JFrame)
- 27. 最小化彈出窗口
- 28. 如何最大化窗口?
- 29. Caliburn.Micro最大化Silverlight窗口
- 30. PHP Webdriver - 最大化窗口