2012-02-23 74 views
1

我有一個使用派生MFC類繪製控件的MFC對話框的問題。自定義控件無閃爍對話框

我們的客戶之一有一臺真正的緩慢的電腦與一個糟糕的圖形卡,甚至正常的Windows對話畫漆很慢。在我們的案例中,問題更爲嚴重。每個單獨的控件(例如按鈕,組框,標籤)可以看作是分開繪製的。

在大多數情況下,我已經重寫/實現了OnPaint()處理程序,認爲在提供的任何設備上下文上繪製應該是要走的路。

理想情況下,我想要做的就是將所有控件繪製在屏幕外的緩衝區中,這樣當需要重新繪製對話框時 - 砰 - 它只是將單個渲染圖像複製到屏幕上,而不是繪製每個控件到屏幕上一個接一個。

有人可以請教我怎麼才能實現這種雙緩衝?

回答

0

我已經找到了解決我的問題的方法..通過將對話框擴展樣式設置爲WS_EX_COMPOSITED,繪圖效果很好..我現在遇到的問題涉及WM_PAINT和WM_ERASEBKGND消息的連續流,我在啓用此樣式時繼續獲取。

有誰知道我可以如何阻止WM_PAINT/WM_ERASEBKGND消息不斷髮生?

+1

如果您重寫了WM_PAINT處理程序,請確保它執行BeginPaint和EndPaint - 這就是告訴Windows該區域已被正確繪製並且不需要發送另一個WM_PAINT。 – 2012-02-24 22:33:08