我的理解: 之所以分有效无效是为性能考虑的,因为通常窗口只有部分内容发生变化,所以只需要这变化的部分重新绘制就可以了,这些变化的区域就是无效区域(无效区域是由系统自动计算的,当然你也可以显式调用InvalidateRect来使某些矩形区域无效化),无效区域会使得系统发送一条WM_PAINT消息给你的窗口处理函数。
通常这样
hdc = BeginPaint(hwnd,&ps);//ps结构体就包含了无效区域信息
。。。。。。。。
EndPaint(hwnd,&ps);//这句很重要,它使得无效区域有效化(否则如果一直存在无效区域,系统就会不停的向窗口消息处理函数发送WM_PAINT消息)