菜鸟求助(在线等):为什么使用InvalidateRec指定的刷新区域不起作用? 本人在OnMouseMove中调用InvalidateRec(rc, TRUE),按说应该只刷新rc范围内的东西,可是结果其他一些地方也跟着刷新,不知道为什么。没有窗口的大小变化及覆盖等事件发生。郁闷死了谢谢大家了~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可是我必须使用TRUE来擦除背景,没办法 没有啊,我看过了,CRect定义不大 我也遇到过这种问题,我感觉是InvalidateRec调用OnDraw()的过程中rc大小改变了 再调用一下UpdateWindow()就可以了吧 InvalidateRect肯定是没有问题的,这个我用过n次了,可以肯定。所以如果出现楼主这个问题的只有两种可能:1、CRect过大;2、别的地方还有Invalidate或InvalidateRect检测方法:在InvalidateRect后面加上CPaintDC dc(this),如果画面依然更新,说明在InvalidateRect之后还有别的Invalidate或InvalidateRect;如果画面没有更新,把CPaintDC dc(this)提到InvalidateRect前面,如果画面是期望的那样,说明InvalidateRect之前还有别的Invalidate或InvalidateRect,但如果还是和不加一样的效果,那么只有一种可能,那就是CRect过大。 谢谢w_anthony。我试过了,发现CPaintDC dc(this)放在InvalidateRec前后都仍然使不该刷新的地方还是刷新了,唯一的区别是,放在后面时,InvalidateRec(rc,TRUE)中的rc区域刷新的慢了些。我可以保证不是CRect过大的原因。不知道还有没有其他原因啊?我在论坛上看到也有人遇到过这样的问题没有解决 放在后面依旧使不该刷新的地方刷新了,说明其他地方必定还有Invalidate或InvalidateRect,可以直接把InvalidateRect注释掉,我怀疑画面还是会更新。如果rc区域刷新的慢了些,该不会是有定时器吧? 暂时没有发现其他地方有InvalidateRec,我跟踪看看。没有定时器先谢谢了~^_^ 如果其他地方没有Invalidate的话,不会出现这个情况的。还是查查代码吧!! vs2010 和 vc 6.0 中的代码实现方式? 一些基础问题,不明白请指教 大量读取,计算操作画面刷新问题 新手,如何将CString转为int VC在程序中可否取得程序所在磁盘的剩余空间? 对话框颜色设置 用vc开发一个控件,可以在asp中调用得。 关于数组的问题,请各位高手帮忙。 请教这个图像相关的控件开发问题 有关获取网卡信息的问题 我关于全局指针的一点设想 如何生成点阵库!!!!---急???
1、CRect过大;
2、别的地方还有Invalidate或InvalidateRect检测方法:
在InvalidateRect后面加上CPaintDC dc(this),如果画面依然更新,说明在InvalidateRect之后还有别的Invalidate或InvalidateRect;如果画面没有更新,把CPaintDC dc(this)提到InvalidateRect前面,如果画面是期望的那样,说明InvalidateRect之前还有别的Invalidate或InvalidateRect,但如果还是和不加一样的效果,那么只有一种可能,那就是CRect过大。
我试过了,发现CPaintDC dc(this)放在InvalidateRec前后都仍然使不该刷新的地方还是刷新了,唯一的区别是,放在后面时,InvalidateRec(rc,TRUE)中的rc区域刷新的慢了些。
我可以保证不是CRect过大的原因。
不知道还有没有其他原因啊?我在论坛上看到也有人遇到过这样的问题没有解决
先谢谢了~^_^