共用方式為


不使用WM_PAINT訊息繪製

雖然應用程式在 處理WM_PAINT 訊息時執行大部分的繪圖作業,但應用程式有時候會更有效率地直接在視窗中繪製,而不需要依賴 WM_PAINT 訊息。 當使用者需要立即的意見反應時,例如選取文字並拖曳或重設物件大小時,這非常有用。 在這種情況下,應用程式通常會在處理鍵盤或滑鼠訊息時繪製。

若要在視窗中繪製而不使用 WM_PAINT 訊息,應用程式會使用 GetDCGetDCEx 函式來擷取視窗的顯示裝置內容。 透過顯示裝置內容,應用程式可以在視窗中繪製,並避免干擾其他視窗。 當應用程式完成繪圖時,它會呼叫 ReleaseDC 函式來釋放顯示裝置內容以供其他應用程式使用。

在沒有使用 WM_PAINT 訊息的情況下繪製時,應用程式通常不會使視窗失效。 相反地,它會以這類方式繪製,以便輕鬆地還原視窗並移除繪圖。 例如,當使用者選取文字或物件時,應用程式通常會藉由反轉視窗中已有的任何專案來繪製選取範圍。 應用程式只要再次反轉,即可移除選取範圍並還原視窗的原始內容。

應用程式負責仔細管理對視窗所做的任何變更。 特別是,如果應用程式繪製選取範圍,而且發生插播 WM_PAINT 訊息,應用程式必須確定在訊息期間完成的任何繪圖都不會損毀選取範圍。 為了避免這種情況,許多應用程式都會移除選取範圍、執行一般的繪圖作業,然後在繪圖完成時還原選取範圍。