vc 中重绘窗口到底是什么意思??

vc中重绘窗口到底是什么意思??为什么要重绘窗口??... vc 中重绘窗口到底是什么意思??为什么要重绘窗口?? 展开
 我来答
stone_dongdong
推荐于2016-02-09 · TA获得超过2853个赞
知道大有可为答主
回答量:1636
采纳率:0%
帮助的人:1020万
展开全部
当窗口的客户区有无效区间,就会自动重绘。比如你调用了函数Invalidate,InvalidateRect,InvalidateRgn,就会在窗口产生无效区。然后在下一次 WM_PAINT消息来临时候就会将累计的无效区间合并,并重绘。
或者直接调用 RedrawWindow(),设置无效区并发送WM_PAINT消息重绘。

如果你修改了窗口的显示,移动了控件,在上面绘图等操作,当然需要对窗口重新绘制。或者你就是闲的没事,想让它重绘,调用UpdateWindow发送WM_PAINT;
rocchetta00
2007-10-17 · TA获得超过1069个赞
知道小有建树答主
回答量:686
采纳率:0%
帮助的人:565万
展开全部
重绘窗口一般都是由移动窗口或改变窗口大小,改变显示的数据等操作引起的。重绘窗口更新了窗口的信息,使窗口显示的内容为最新。
当编程时,常需要在改变窗口显示数据后更新窗口的信息。这时就可以通过重绘窗口来实现更新拉~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5444dd236
2007-10-10
知道答主
回答量:30
采纳率:0%
帮助的人:0
展开全部
通过Invalidate或InvalidateRect的方法可以显式地发送WM_PAINT,从而起到重绘窗口的作用。其中Invalidate会重绘整个窗口,而InvalidateRect可实现部分重绘。原来以为使用InvalidateRect后,Device Context就会自然选区无效区域了,今天作了一个实验发现不是这样。

以Programming with Visual C++. Net中的Ex06c为例,如果不采用OnDraw的pDC指针参数,而是直接用CDC pDC=GetDC(); 的方法,则不能实现指定区域的部分重绘,此时若拖动那个圆的话,固定的黑色方块也会跟着闪烁,说明整个窗口都重绘了。所以说OnDraw屏蔽了一些细节。

如果不是用文档/视图架构的OnDraw,而是OnPaint方法的话,可以看到自动生成的代码中有CPaintDC dc(this); 一句。查阅msdn文档,CPaintDC继承自CDC类,增加了对BeginPaint和EndPaint方法的调用。也正是BeginPaint方法实现了无效矩形区域的指定,从而实现部分重绘。这样,OnPaint时如果想调用分立的用于绘图的函数,只要将OnPaint方法中建立的CPaintDC对象的指针传递过去就可以了,这样尽量减少闪烁。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
43575543
2007-10-09 · 超过27用户采纳过TA的回答
知道答主
回答量:163
采纳率:0%
帮助的人:104万
展开全部
比如,窗口被别的窗口挡住,上面的窗口移开的话,窗口就需要重绘窗口。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式