当前位置:C++技术网 > 资讯 > Windows程序设计之无效矩形

Windows程序设计之无效矩形

更新时间:2015-10-18 16:58:38浏览次数:1+次

先跟大家说说这篇文章的来由,这几天由于需要windows编程方面的知识,就拿起了“圣经”看了起来,到了第三章遇到问题了,理解上出了问题。然后就跟站长讨论了一下,然后将此整理成文,给我自己也给通道中人一点点帮助。

好了,问题是这样的。书上说BeginPaint()返回时,PAINTSTRUCT中的rcRect对应的是无效矩形,windows将绘图限制在了这个无效矩形内。本来没啥问题,然后我就好奇了一下,发现可以在此之外绘图。我就奇了怪了,咋回事上网查啊也没查到,翻书啊书上就这么写着。不知道怎么回事,各种猜想各种实验。后来就问了站长,讨论之后发现,并没有在其他地方绘图,的确只是在这个无效矩形里绘图的。或者这样说,你是在其他地方绘图了,但是只有在无效矩形框内的才得一更新,其他地方绘的数据是无效的。通过GetDC获取的设备环境句柄就没有此局限了。可以在客户区的任何位置绘图,但GetDC却不会使得无效区域变为有效,换句话说就是消息队列中还有WM_PAINT这个消息,这个大家一定要注意。此外,什么时候系统会发送WM_PAINT这个消息,书上也明确指出了,并不是说有一个程序窗口覆盖了你的窗口,系统就会发出一个WM_PAINT消息,系统自身会尝试着去保存这些被暂时覆盖掉的数据。当尝试失败之后才会发出WM_PAINT消息。