2013-04-20 41 views
2

我想看看WM_PAINT消息。但起初,我想讓系統執行默認繪圖,然後我手動繪製其他東西。WM_PAINT在內存中的默認繪圖DC

例如:

case WM_PAINT: 
     CallWindowProc(DefWndProcTabControl, hwnd, message, wParam, lParam); 
     TabControlOnPaint(hwnd); 
     return 0; 

這工作,但不是很好,因爲它的筆觸。

一種可能性是使默認繪圖在內存DC中完成。但如果我使用CallWindowProc(DefWndProcTabControl...),我不知道該怎麼做。

對此有何建議?

回答

4

如果您正在繪製的窗口支持該窗口,請使用WM_PRINTWM_PRINTCLIENT將默認繪製到內存DC中。

(嘗試這樣做,通過CallWindowProc是不可能奏效。)

+0

你能給一點點的解釋?我不確定,但'WM_PRINT'或'WM_PRINTCLIENT'「在屏幕上」打印「某個內存DC?如果是這樣,如何使用它們來執行默認繪圖(尚未完成並且未在屏幕上顯示)。非常感謝你。 – user565739 2013-04-20 20:10:40

+1

@ user565739:MSDN:「WM_PRINT消息發送到一個窗口,請求它在指定的設備上下文中繪製自己」。所以你使用'SendMessage'將'WM_PRINT'發送給'hwnd',傳遞給它一個內存DC,並且它將自己繪製到那個DC中。 – RichieHindle 2013-04-20 20:12:03

+0

@ RichieHindle:太棒了!再次感謝。 – user565739 2013-04-20 20:16:11