问窗口闪烁如果解决
很久没有使用VC,最近拿起VC都不知道怎么下笔了
我使用CWnd派生出CCardCtrl,在Card中完成了各种绘图操作(OnPaint()),再使用CWnd派生CCardsCtrl,在CCardsCtrl中有很多的CCardCtrl,可是在CCardsCtrl反复重绘时有闪烁,请问如果解决.
就是在一个窗口中有很多的字窗口,而主窗口重绘会使用子窗口重绘而产生闪烁,还有就是子窗口相交的重绘也会产生闪烁,希望就是主窗口只绘制不包括子窗口的部分,而子窗口之间相交的地方只绘制Z轴上面那个,不会制下面的子窗口.
谢谢
问题点数:50、回复次数:12Top
1 楼sdwalnut1(豆浆加油条)回复于 2004-09-04 08:20:51 得分 10
1.使用双缓存技术
2.不要每次都全部刷新,只刷新需要刷新的部分。Top
2 楼laiyiling(陌生人[MVP])回复于 2004-09-04 08:26:13 得分 0
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=186161Top
3 楼kugou123(酷狗)(彪悍的人生,不需要解释 www.xiaozhou.net)回复于 2004-09-04 09:30:08 得分 10
常用的就是双缓存技术。Top
4 楼yinzhaohui(努力)回复于 2004-09-04 10:27:20 得分 0
你们说的,都是在单窗口中进行绘图时防止闪烁的方式,如果是这样那就很单简了http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=186161写的也都是这方面的方法,使用部分屏新只能缓解不能删除,而使用双缓存技也只是在技术上可以完成这个要求,这要求首先所有绘图在后端内存,当要显示时一显示,可在显示时准备下一帧要显示的,可是这些都是在同一窗口可做到,如果我使用多个窗口就不知道怎样做了,Top
5 楼Mackz(在相互)回复于 2004-09-04 13:10:59 得分 0
如果解决就好。Top
6 楼weiziyuner(烂人)回复于 2004-09-04 14:01:27 得分 10
楼主的问题解决了么,我也有这个问题,可能是父窗口onsize()的时候子窗口不停的movewindow()的原因,我试遍了所有的方法问题还是没有解决。。。Top
7 楼yinzhaohui(努力)回复于 2004-09-04 15:17:54 得分 0
没有去想了,等我写完了这个打牌游戏后再去解决了,不行就只有使用单窗口方式来解决,可是我还是想了一个方法,还是使用内存DC,在View中建立一个CMemDC类,把不同窗口要绘制的图形都写进行,当写完后判断一次写如屏幕.这个CMemDC在每一个窗口中都可调用Top
8 楼yinzhaohui(努力)回复于 2004-09-04 15:26:14 得分 0
我还想问一个问题,就是能不能在一个菜单项中的处理函数中发牌(可以延时,并刷新区域),我使用了不行不能刷新,只有当所有都发完后才刷新,是否要使用一个线程或是使用定时器才可以做到Top
9 楼SmallBigCat(乱花渐欲迷人眼)回复于 2004-09-04 18:11:15 得分 10
给CCardsCtrl窗口加上WS_CLIPCHILDREN风格即可Top
10 楼yinzhaohui(努力)回复于 2004-09-04 20:50:19 得分 0
不行,闪烁问题没有解决,而还带来了更多的问题(花屏),就是在放大缩小时闪烁Top
11 楼IT_Fly()回复于 2004-09-06 09:22:40 得分 10
除了使用双缓冲,还得重载OnEraseBkgnd函数
BOOL C***View::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
}Top
12 楼yinzhaohui(努力)回复于 2004-09-06 22:49:07 得分 0
背景当然不能要系统重绘了,这一行是加了的Top




