2010-04-22 50 views
0

我通常會將繪圖放在WM_PAINT中以在屏幕上繪製,但如果您需要在運行時弄清楚這一點,那麼您仍然會使用GDI繪圖API?窗口上的運行時繪圖

-

//In WndProc 

case WM_PAINT: 
{ 
    hdc = GetWindowDC (hwnd) ; 
    //draw here using hdc 
    ReleaseDC (hwnd, hdc) ; 

} 

而不是把圖中WM_PAINT,可你畫使用的功能,仍然可以得到WM_PAINT的功能,以重繪?

+0

你可以更具體一些,也許有一個例子。 – Lazarus 2010-04-22 15:14:07

回答

0

WM_PAINT是異步的,意味着它在OS決定重新繪製窗口時調用。您還可以通過在WM_PAINT消息處理程序之外調用GetDC()/ ReleaseDC()來同步繪製。

http://msdn.microsoft.com/en-us/library/dd145126(v=vs.85).aspx

而且,處理WM_PAINT消息時,你應該使用調用BeginPaint()/ EndPaint函數(),並返回0。我已經看到了一些奇怪的副作用時,這種情況不會發生。