win32编程中,在响应WM_PAINT时一不小心容易造成cpu使用率过高的问题,原因是窗口时刻都在检查自己的updata region,如果有则发出WM_PAINT,直到调用BeginPaint和EndPaint后才会将updata region置空,如果在消息相应函数中没有加入BeginPaint,EndPaint则WM_PAINT就会不断被发送,造成死循环。 如果不主动响应WM_PAINT,则该消息会进入DefWindowProc,它会调用那两个函数。
在mfc中亦是一样,一般在onpaint中会出现CPaintDC dc(this) 该类的构造函数会调用BeginPaint,析构函数会调用EndPaint。或者出现父类的OnPaint,如果把这些注释掉,运行后cpu占用率依旧会很高。