我有一個調整大小的對話框。它還具有一個自定義背景,我在響應WM_ERASEBKGND調用(當前是對FillSolidRect的簡單調用)中繪製了一個自定義背景。如何在Windows對話框中處理WM_ERASEBKGND時避免閃爍
當對話框調整大小時,會發生巨大的閃爍。爲了嘗試減少閃爍,我列舉了所有子窗口並將它們添加到剪輯區域。這似乎有一點幫助 - 現在閃爍現象在所有兒童控制器中都很明顯,因爲它們被重新繪製。
如何在調整大小時使對話框無閃爍?我懷疑雙緩衝必須發揮一部分,但我不知道如何做到這一點與兒童控制的對話(沒有使所有的孩子控制所有者繪製或類似的東西)。
我要指出,我使用C++(不是.NET)和MFC,雖然純基於Win32的解決方案,歡迎:)
注意:有一件事我試過,但沒有工作(不肯定爲什麼)是:
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.FillSolidRect(rect, backgroundColor);
pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);