CView刷新无效矩形的问题 我用InvalidRect(CRect rc)来刷新区域,但效果不好,明明只刷一小部分,可其他地方也在闪,请问如何解决 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CView::SetRedraw( FALSE );do somethingCView::SetRedraw( TRUE );InvalidateRect( rc );UpdateWindow(); 对不起,我没太看明白这么写和我用 InvalidateRect( rc );有何区别?就是多了个UpdateWindow? 类似联众的麻将牌池,放了很多牌,并且要不停的显示最后一张,在显示最后一张图片时,我调用 InvalidateRect( rc )来实现刷新,其中的rc就是最后一张牌的大小,在OnDraw中有整个牌池的显示,我的意思是,我只要求刷新一牌池中的小部分,为什么整个牌池都在闪?大家看明白了吗? 对阿~~ 坑定是画图的地方有问题在InvalidateRect( HWND hWnd, // handle to window CONST RECT* lpRect, // rectangle coordinates BOOL bErase // erase state)的bErase的值 被搞成TRUE了~~ 这样系统自个会在onpaint时 先把底图用白色刷了,然后你再刷就会晃眼了~~~ 至于会闪,肯定是有地方搞错了,搞成重画所有的client了~~~ 对了 接管WM_ERASEBKGND了吗~~ 这个不接管的话,灵活性就低了 我用了另一个方法,现在好些了,就是GetClipBox(rc)然后再ondraw中根据rc判断哪些可以画,哪些不需要画 no no 应该在WM_ERASEBKGND的时候 GetClipBox(rc) 根据rc判断哪些可以画,直接就在处理WM_ERASEBKGND消息的函数里画 你在onDraw里画的话,不注意的话还会闪-----因为在onDraw之前,MFC已经在处理WM_ERASEBKGND时把剪裁区的地图抢刷成白色~~ ------------------------------------------------------------------------ 回复人: Rodgu(棒子) ( ) 信誉:100 2003-03-31 12:00:00 得分:0 我用了另一个方法,现在好些了,就是GetClipBox(rc)然后再ondraw中根据rc判断哪些可以画,哪些不需要画 多线程读串口问题 有没有单独重绘 某一个控件的方法? 未入门菜鸟的牢骚帖!!! 如何打印在对话框上面的所有控件---解决了立马送分 UDP 一个socket处理能力的问题!大家来帮个忙,谢谢 我在VC上编译的软件在繁体系统显示乱码啊,如何解决? 如何在windows2000/xp下直接读写ext2格式的U盘!? 又是一个简单的问题,很简单的》》送分。。。 看《深入浅出MFC》之前,还要先看WINDOWS编程方面的事吗? 如何修改窗口类名? 请问当作为服务器端时,如何处理 我在一个普通DLL中起了一个CWinThread线程??现在发现一些问题。请大家帮忙!
do something
CView::SetRedraw( TRUE );
InvalidateRect( rc );
UpdateWindow();
在InvalidateRect(
HWND hWnd, // handle to window
CONST RECT* lpRect, // rectangle coordinates
BOOL bErase // erase state
)
的bErase的值 被搞成TRUE了~~ 这样系统自个会在onpaint时 先把底图用白色刷了,然后你再刷就会晃眼了~~~
至于会闪,肯定是有地方搞错了,搞成重画所有的client了~~~ 对了 接管WM_ERASEBKGND了吗~~ 这个不接管的话,灵活性就低了
应该在WM_ERASEBKGND的时候 GetClipBox(rc) 根据rc判断哪些可以画,直接就在处理WM_ERASEBKGND消息的函数里画
------------------------------------------------------------------------
回复人: Rodgu(棒子) ( ) 信誉:100 2003-03-31 12:00:00 得分:0
我用了另一个方法,现在好些了,就是GetClipBox(rc)然后再ondraw中根据rc判断哪些可以画,哪些不需要画