今天写想重绘CButton控件,于是重写了OnPaint函数,结果看CPU 50%(因为我是双核,如果单核估计就是100%了)经过调试发现 OnPaint函数一直在执行,没有发生重绘消息时也会执行。不知道MFC的机制怎么会事,后来新建一个工程,添加OnPaint函数,默认代码,发现没事,注释掉 CPaintDC dc(this);这句后 又是50%。这才发现,MFC应该是用CPaintDC dc(this);这句来判断是否处理了OnPaint消息(个人认为)
/*********************************************************** 事隔多年 更新一下 **************************************************************************/
原来windows底层在调用了Invaildate后会发送一个WM_PAINT的消息给DC,如果没有调用BeginPaint的话,这个WM_PAINT消息会一直触发。
参看出处:来自百度空间