这是个windows编程问题。
第一种情况显示出来的字很正常。
case WM_PAINT:
gdc = BeginPaint (hwnd, &ps);
TextOut (gdc, 0, 0, s, strlen (s));
EndPaint (hwnd, &ps);
break;
第二种情况显示的字不停闪烁。
case WM_PAINT:
gdc = GetDC (hwnd);
TextOut (gdc, 0, 0, s, strlen (s));
ReleaseDC (hwnd, gdc);
break;
BeginPaint() 和EndPaint() 可以删除消息队列中的WM_PAINT消息,并使无效区域有效。
GetDC()和ReleaseDC()并不删除也不能使无效区域有效,因此当程序跳出 WM_PAINT 时 ,无效区域仍然存在。系统就回不断发送WM_PAINT消息,于是程序不断处理WM_PAINT消息。CPU占有率很高,这时候就无法处理OnTimer消息了
OnTimer无效(WM_PAINT消息过多)
最新推荐文章于 2022-12-07 09:37:18 发布