关于BeginPaint和WM_ERASEBKGND

1。当操作系统意识到无效区域的时候,会向窗口发送WM_PAINT消息。必须调用Beginpaint(),BeginPaint用来为DC获得一个无效区域。以后的绘制只会在这无效区域里面绘制。

 

2。同时,如果是默认情况下,会发WM_ERASEBKGND消息,这样就会有重新刷新背景的机会。

MFC如果指定了Brush,默认的DefaultWinProc会擦除背景一次。要想只擦除一次背景,则必须在WM_ERASEBKGND直接返回FALSE,表示自己没有刷新背景。

 

3。如果使用InvalidatRect,那么就会产生无效区域,最后一个参数默认为false,也就是说只发送WM_Paint消息,为TRUE则在BEginPaint的时候,发送WM_ERASEBKGND消息。

你可能感兴趣的:(mfc)