一:什么時候才會發生重繪窗口的消息?
當需要更新或重新繪制窗口的外觀時,應用程序就會發送WM_PAINT消息。對窗口進行重新繪制。
二:Invalidate() -- RedrawWindow() -- UpdateWindow()三個函數有什么異同?
Invalidate()是強制系統進行重畫,但是不一定就馬上進行重畫。因為Invalidate()只是通知系統,此 時的窗口已經變為無效。強制系統調用WM_PAINT,而這個消息只是Post就是將該消息放入消息隊列。當執行到WM_PAINT消息時才會對敞口進行重繪。
UpdateWindow只向窗體發送WM_PAINT消息,在發送之前判斷GetUpdateRect(hWnd,NULL,TRUE)看有無可繪制的客戶區域,如果沒有,則不發送WM_PAINT。
RedrawWindow()則是具有Invalidate()和UpdateWindow()的雙特性。聲明窗口的狀態為無效,並立即更新窗口,立即調用WM_PAINT消息處理。