之前我了解了BeginPaint和EndPaint,这两个函数能找到需要重绘的部分,并重绘之,什么是重绘的部分呢? 这个概念以及后面的validate,invalidate的概念书中介绍得有点模糊,下面是我的一点理解:
我们的窗口不可能在桌面上一动不动,当它发生变化的时候,windows就会对其变化的地方,就像画画一样,擦掉不要的,重新画上需要的,例如,为了实现上图中,被压在下面的窗口显示在上面,其实蓝色框中挖去红色部分我们都可以保持不变,只要对红色的部分进行一点修改就可以了,这就是windows的策略。
上面我们可以得到两个区域,1红色,2蓝色去掉红色所剩下的部分,1就是无效区,2就是有效区,有效就代表还能用,我们就不去管它,而无效的地方我们要让它变得有效,就需要重绘。
可以说windows这种策略很聪明,可以偷不少懒,可是当我们走不了这种弯路,比如需要整个窗口显示动画,我们想对整个窗口重画,那么作者就提到了第二种策略:
GetDC(hwnd,hdc),而hdc这个参数就定义了你想重绘的区域矩形。而这部分同时变的无效,而对于无效的区域windows一直会去做WM_PAINT这件事,(其它活都不干了&#