我在定时器函数中用Invalidate();隔一段时间刷下屏,根据flag改变颜色
if(!k)
{
  Flag=TRUE;
  Invalidate();
 
}
else
{
  Flag=FALSE;
  Invalidate();
}
当时else时候一直刷屏,屏幕一直抖动,很不好看。有什么在else里面只刷一次屏或者还有其他什么方法啊,求高人指导。

解决方案 »

  1.   


    ……
    else 
    {
      if(Flage)
      {
        Flage = false;
        Invalidate();
      }
    }
      

  2.   

    你的if(!k)只要k不是零都执行else啊,这肯定一直刷。是程序的逻辑问题吧
      

  3.   

    楼主的意思是不是一直运行esle,若是的话那你就把K改成bool型的或是对K进行mod(2),那样就不会老是执行else了。
      

  4.   

    这样控制有点啰嗦
    下列代码根据定时时间改变颜色
    { //在定时函数里
       int n =0;
       n++;   if ( !n/2)
       {
          Flag=TRUE;
          Invalidate();
        }else
         {
             Flag=FALSE;
          Invalidate();
         }
      
    }
    如果颜色改变快,就增加定时时间
      

  5.   

    有什么方法可以在定时器中使用
    GetDlgItem(IDC_EDITXP)->SetTextColor(RGB(255,255,0);呢
    就像SetWindowText一样
      

  6.   

    OnCtlColor 函数中根据 OnTime的变量来改变颜色值了。。