您的位置:程序门 -> vc/mfc -> 界面



控件闪烁问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


控件闪烁问题[已结贴,结贴人:wenxinfly]
发表于:2007-05-15 15:02:33 楼主
我在mfc对话框程序中用ipictur在窗体上画了一张图片,
同时,在窗体上有一个clistctrl控件,可是这个控件有闪烁问题,
大家能帮我解决这个问题么?
发表于:2007-05-15 15:11:391楼 得分:0
去掉图片,clistctrl有闪烁吗?

还是clistctrl在频繁加入或删除项目时有闪烁?
如果可以,让clistctrl在操作完了后再刷新
发表于:2007-05-15 15:37:012楼 得分:0
不要图片,没有闪烁,


图片的绘制是在ontimer中调用的。
发表于:2007-05-15 16:34:353楼 得分:0
图片的绘制     刷新用invalidaterect(&rect,false);
发表于:2007-05-15 16:54:504楼 得分:0
图片的绘制是直接调用图片的draw方法
发表于:2007-05-15 17:43:015楼 得分:5
::excludecliprect  
用这个函数将你的控件区域排除
发表于:2007-05-15 17:55:416楼 得分:0
::excludecliprect
在哪里调用呢
发表于:2007-05-16 08:40:357楼 得分:0
图片的绘制是在ontimer中调用的??????????
为什么放在这里?导致ontimer   和系统控制的自绘有冲突,可能在短时间内画2次,间隔很短就闪烁了;
发表于:2007-05-16 08:45:348楼 得分:0
图片不会有系统系统控制的自绘的
发表于:2007-05-16 10:39:449楼 得分:0
在你的绘制过程之前
一般在   onpaint()
发表于:2007-05-16 11:16:4010楼 得分:0
ontimer事件可能响应的时间比较短
发表于:2007-05-16 11:50:5011楼 得分:5
调用绘图在ontimer事件中肯定不行的,一般在   onpaint   事件中调用重画功能。
消除闪烁可以在内存中画好以后在复制到显示设备环境中,网上有一个   cmemdc的类的,google   一下
发表于:2007-05-16 22:18:2012楼 得分:0
onpaint
没有做任何事的
发表于:2007-05-19 10:45:4813楼 得分:0
我是用ipicture在一张图片画在窗体上的,画满了整个窗体,然后在窗体上放了一个listctr控
件,onpaint没有做任何事的,是在ontimer中画图片的
发表于:2007-05-20 00:04:4914楼 得分:5
不要在ontimer里画图,
你可以这么做,也可以达到定时画图的效果
定义个全局变量
bool   bflag=false;
ontimer()
{
    bflag=true;
}

onpaint()
{
    if(bflag)
{  
    ...//这里画图
    bflag=false;
}
}
发表于:2007-05-30 13:06:5015楼 得分:0
好的
发表于:2007-05-30 15:42:2316楼 得分:5
会不会是因为:(个人猜测)
ontimer中画图片->
listctr控件   paint   ->
图片中listctr控件位置   invalid->
ipicutre   进行draw->
listctr控件   paint   ->
图片中listctr控件位置invalid   ->   ....

?   不过这样好像没底了
发表于:2007-06-01 16:16:5617楼 得分:0
不要在ontimer里画图,
你可以这么做,也可以达到定时画图的效果
定义个全局变量
bool   bflag=false;
ontimer()
{
    bflag=true;
}

onpaint()
{
    if(bflag)
{  
    ...//这里画图
    bflag=false;
}
}

这不能达到定时画吧
发表于:2007-06-01 16:30:0418楼 得分:0
当然不能定时器都没开
发表于:2007-06-01 16:31:5019楼 得分:0
在onpaint   里加上settimer(1,5,null)定时器里加killtimer(1)


快速检索

最新资讯
热门点击