//---------------窗口函数---------------
LRESULT CALLBACK WndProc(HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
static int n = 0; switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
break; case WM_PAINT:
// HDC dc;
// PAINTSTRUCT ps;
// dc = BeginPaint(hwnd, &ps);
// TextOut(dc, 0, 0, "hello", strlen("hello"));
// EndPaint(hwnd, &ps);
TRACE("WM_PAINT : %d\n", n++);
break; default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
对于WM_PAINT,为什么什么都不做的时候,发现不停的TRACE,CPU占用很高。
有BeginPaint和下面的操作的时候,就正常了。
BeginPaint
EndPaint
不能去掉
有BeginPaint和下面的操作的时候,就正常了。
============
只有当存在无效区时才会触发 WM_PAINT消息,而调用BeginPaint才会消除掉无效区,因为你没有调用BeginPaint,所以无效区没有消除,于是系统一直发WM_PAINT消息。