我知道WM_PAINT告訴一個窗口,它需要完全重新繪製自己,但顯然這並不是在部分覆蓋時發送的消息,然後窗口前面的窗口不再出現,並且它需要重新繪製髒部分。有沒有人知道在這種情況下發送了什麼消息?發送Windows消息以重新繪製部分遮擋的窗口?
編輯:發現問題:
問題涉及到德爾福控制我寫的是一個Delphi窗體上嵌入SDL呈現表面。 SDL有一個API在另一個窗口的HWND上構建渲染器,並將其標記爲「外部窗口」。
SDL通常在內部處理WM_PAINT
,所以我最終不得不向SDL的WindowProc添加一些代碼,以便將消息轉發到外部WindowProc,如果它是外部窗口的話。這有時是有效的,但事實證明,從窗口的數據結構中剝離了外部窗口標誌是一個小問題,所以它吞噬了消息而不是將它傳遞給我的應用程序。一旦我解決了這個問題,我就開始收到WM_PAINT
消息。
所有5個答案都是正確的:WM_PAINT是當您的客戶區域的部分或全部需要重新繪製時發送的*消息。在較新版本的Windows上,它並不像以前那樣頻繁發送,因爲Windows爲了實現分層窗口和玻璃窗口視覺效果而更積極地緩存桌面 - Windows從內部位圖繪製不發送任何類型的消息在那種情況下。 – 2009-11-23 08:52:01