MFC重绘控件使CPU占用100%(50%)解决方法

发布于 2020-05-05  47 次阅读


今天写想重绘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消息会一直触发。


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。