今天帮一位同学解决一个问题,程序在OnPaint中使用如下代码:
然后一直进不了OnTimer
最后百度了下,发现是如下问题:
BeginPaint() 和EndPaint() 可以删除消息队列中的WM_PAINT消息,并使无效区域有效。
GetDC()和ReleaseDC()并不删除也不能使无效区域有效,因此当程序跳出 WM_PAINT 时 ,无效区域仍然存在。系统就回不断发送WM_PAINT消息,于是程序不断处理WM_PAINT消息。
把
CDC * pDC=this->GetDC();
改成
PAINTSTRUCT ps;
CDC* pDC = BeginPaint(&ps);
把
ReleaseDC(pDC);
改成
EndPaint(&ps);
问题解决.
发现帮助人也是帮助自己,自己会的,可以加深理解,不会的,可以共同学习